Dev

7. [SSO] Keycloak Default DB 변경해보기

VIPeveloper 2020. 10. 8. 14:21
728x90
반응형

1. 서론

  • keycloak은 현재 H2 Database로 관리되고있습니다.

  • 이를 오라클로 변경해보는 작업을 진행하였는데, 찾아봐도 번역본이 없기에 내가 직접 해본 후기를 올리려고 합니다.

  • 참고 자료

    Configuring Keycloak to use Oracle Database

2. 본론

1. ojdbc download

  • 우선 오라클을 이용하기 위해 ojdbc가 있어야 합니다.
  • 저는 ojdbc6을 사용하였습니다. 다운로드는 여기에서 진행하시면 됩니다.

2. make directory

  • 다음과 같은 디렉토리 구성이 필요합니다.
<keycloak-installation-directory>\\modules\\system\\layers\\keycloak\\com\\oracle\\main

다음과 같이 경로를 구성하셨다면, 두 개의 파일을 아래의 사진과 같이 이동시켜줍니다.

3. code module.xml

  • 새로 만들었던 module.xml을 열고, 편집해주는 작업을 진행하겠습니다.

    중요한 것은 jar 파일 명과 아래의 resource-root 의 이름이 같아야 한다는 것입니다.

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.3" name="com.oracle">
   <resources>
      <resource-root path="ojdbc6.jar"/>
   </resources>
   <dependencies>
      <module name="javax.api"/>
      <module name="javax.transaction.api"/>
   </dependencies>
</module>

이제 모듈이 셋팅되었는데요. 사실 이 파일을 standalone.xml 에 등록해주기 전까지는 Keycloak은 무슨일이 벌어졌는지 알 길이 없습니다. 그래서 이제 등록해주기로 합시다.

4. code standalone.xml

  • 이제 standalone.xml의 경로로 이동합니다. 해당 경로는 다음과 같습니다.

  • 열어주고 ctrl + f 후, 다음을 찾아서 다음과 같이 바꾸어줍니다.
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
            <datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <connection-url>jdbc:oracle:thin:@localhost:1521/orcl</connection-url>
                    <driver>oracle</driver>
                    <security>
                        <user-name>system</user-name>
                        <password>123</password>
                    </security>
                    <!--<validation>
                    <background-validation>true</background-validation>
                    <background-validation-millis>60000</background-validation-millis>
                    </validation>-->
                    <pool>
                        <max-pool-size>20</max-pool-size>
                    </pool>
                </datasource>
                <drivers>
                    <driver name="oracle" module="com.oracle">
                        <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
                    </driver>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>
  • 포트, 사용자 이름과 비밀번호는 잘 커스터마이징하시길 바랍니다.
  • 이제 실행해서 확인해 보면 잘 되는 것을 볼 수 있습니다.

3. 결론

  • Keycloak의 접속정보를 바꾸어보는 작업을 진행해보았습니다. postgre db, mysql db 등 다른 db도 이와 유사하게 변경 가능할 것으로 예상됩니다.
728x90
반응형