KeycloakのDBをpostgreSQLに変更する

  •  
 
ズィスト2019年7月10日 - 12:07 に投稿

タグ

KeycloakのDBをpostgreSQLに変更する

  • 環境

    • jdk 1.8.0
    • keycloak 6.0.1
    • postgreSQL 11.4
      ※使用する文字コードをutf-8に変更しておく
  • 手順

    1. postgreaSQLのJDBCドライバを以下のサイトよりダウンロード
      PostgreSQL JDBC Download
      ※今回は42.2.6 JDBC 4を使用

    2. 設定ファイル及びJDBCドライバを入れるディレクトリを作成

      cd keycloak-x.x.x/modules/system/layers/keycloak/org
      mkdir postgresql
      cd postgresql
      mkdir main
      
    3. 設定ファイル作成・ドライバを移動

      1. 作成したmainディレクトリ内に以下のようなmodule.xmlを作成

        <?xml version="1.0" ?>
        <module xmlns="urn:jboss:module:1.3" name="org.postgresql">
        
            <resources>
                <resource-root path="postgresql-42.2.6.jar"/>
            </resources>
        
            <dependencies>
                <module name="javax.api"/>
                <module name="javax.transaction.api"/>
            </dependencies>
        </module>
        
      2. 手順1でダウンロードしたJDBCのドライバをmain内に移動する

    4. 設定ファイルの変更

      1. keycloak-x.x.x/standalone/configurationの設定ファイルを変更する ※動作モードによって変更するファイルが異なるが、今回はstandalone.xmlを変更

      2. datasouresタグの以下の部分を次のように変更する  

        <!-- before -->
        <subsystem xmlns="urn:jboss:domain:datasources:5.0">
        <datasources>
            ...
            <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:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
        </datasources>
        
        <!-- after -->
        <datasources>
        ...
        <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:postgresql://localhost/keycloak</connection-url>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>username</user-name>
                        <password>username</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="postgresql" module="org.postgresql">
                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                    </driver>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
        </datasources>
        
      3. 同じファイルの以下の部分を書き換える

        <subsystem xmlns="urn:jboss:domain:keycloak-server:1.1">
        ...
        <spi name="connectionsJpa">
            <provider name="default" enabled="true">
                <properties>
                    <property name="dataSource" value="java:jboss/datasources/KeycloakDS"/>
                    <property name="initializeEmpty" value="false"/>
                    <property name="migrationStrategy" value="manual"/>
                    <property name="migrationExport" value="${jboss.home.dir}/keycloak-database-update.sql"/>
                </properties>
            </provider>
        </spi>
        ...
        </subsystem>  
        

手順は以上になります

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。