このエントリーをはてなブックマークに追加

環境構築

keyclocakをcentos7にインストールした際のメモ
ローカルの開発環境として利用するための設定となりセキュリティ等については考慮しない形で構築しています。
素のOSのインストールから記載していますがすでに構築されている場合にはkeyclockのインストールからで問題ありません。
(postgresqlにkeycloakユーザおよびDBのインスタンスの作成が必要です。)

手順

1. CentOSの準備
2. Postgreqlの準備
3. keycloakのインストール

1. CentOSの準備

最小限の構成でインストールを実施します。
  1. yumを利用し最新版にupdateを実行します。

    # vi /etc/yum.conf
    
  2. wgetを利用するためインストールしておきます。

    # yum install wget
    
  3. firewallの設定を無効かしておきます。

  4. SELinuxの設置を無効かしておきます。

以上でCentOSの準備は完了です。

2. Postgreqlの準備

今回はver 12を利用します。

インストール手順

  1. 以下のサイトより指定のリポジトリのURLをコピーする

    PostgreSQL RPM Building Project - Repository Packages

    https://yum.postgresql.org/repopackages.php

  2. コピーしたURLを引数に指定しリポジトパッケージをインストール

    # yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    
  3. postgresql パッケージのインストールおよび自動起動の設定

    # yum -y install postgresql12-server
    

    以下にインストールされていることを確認します。

    /usr/pgsql-12
    
  4. データベース環境の初期化

    実行コマンド

    #  su - postgres -c '/usr/pgsql-12/bin/initdb -E UTF8 --no-locale'
    
  5. 起動および自動起動の設定を行います。

    起動

    # systemctl start postgresql-12
    

    起動確認

    # systemctl status  postgresql-12
    

    自動起動の設定

    # systemctl enable postgresql-12
    
  6. 認証方式の修正

    # vi /var/lib/pgsql/12/data/pg_hba.conf
    

    今回はipv4なので以下の内容を追加します

    host     all             all             0.0.0.0/0              trust
    
  7. 外部接続許可

    # vi /var/lib/pgsql/12/data/postgresql.conf
    

    以下のように修正する

    #listen_addresses = 'localhost'          # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
    #port = 5432                             # (change requires restart)
    

    ↓ コメントアウトを外し listen_addressesを*とする

    listen_addresses = '*'          # what IP address(es) to listen on;
                                          # comma-separated list of addresses;
                                          # defaults to 'localhost'; use '*' for all
                                          # (change requires restart)
    port = 5432                             # (change requires restart)
    

    再起動を正常に起動していることを確認します。

    systemctl restart postgresql-12
    

接続用にkeycloakユーザおよびkeycloakのDBインスタンスを追加

  1. postgresユーザに変更

    # su - postgres
    
  2. psqlにてログイン

    # psql
    
  3. 以下のコマンドを実行

    • ユーザの作成

    create role keycloak with login password 'keycloak';
    
    • DBの作成

    create database keycloak owner=keycloak;
    

3. keycloakのインストール

  1. Java 8 JDKインストール

    sudo yum install java-1.8.0-openjdk
    
  2. Keycloak本体のダウンロードと展開

    # wget https://downloads.jboss.org/keycloak/10.0.2/keycloak-10.0.2.tar.gz
    # tar xfpz keycloak-10.0.2.tar.gz
    # mv keycloak-10.0.2 /opt/keycloak
    
  3. jdbcドライバーの取得

    # wget https://jdbc.postgresql.org/download/postgresql-42.2.14.jar
    
  4. 設定ファイル及びJDBCドライバを入れるディレクトリを作成

    # cd /opt/keycloak/modules/system/layers/keycloak/org/
    # mkdir postgresql
    # cd postgresql/
    # mkdir main
    # cd main/
    # cp /home/tas/postgresql-42.2.14.jar ./
    

    以下の内容で設定ファイル「module.xml」を作成する

    <?xml version="1.0" ?>
    <module xmlns="urn:jboss:module:1.3" name="org.postgresql">
    
       <resources>
          <resource-root path="postgresql-42.2.14.jar"/>
       </resources>
    
       <dependencies>
          <module name="javax.api"/>
          <module name="javax.transaction.api"/>
       </dependencies>
    </module>
    
  5. 設定ファイル(standalone.xml)を変更

    # vi /opt/keycloak/standalone/configuration/standalone.xml
    

    以下の箇所の修正

    • DB関連の修正

      • datasourceをH2用からpostgresql用に修正

      <!--
      <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>
      -->
      <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>keycloak</user-name>
              <password>keycloak</password>
          </security>
      </datasource>
      
      • driversの追加

      <driver name="postgresql" module="org.postgresql">
         <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
      </driver>
      
      • HTTPS通信に変更する

        <server name="default-server"> の配下

      <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/><http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" proxy-address-forwarding="true"/>
      
      • IPの設定

        サーバのIPへ変更する

      <interfaces>
         <interface name="management">
             <inet-address value="${jboss.bind.address.management:192.168.56.131}"/>
         </interface>
         <interface name="public">
             <inet-address value="${jboss.bind.address:192.168.56.131}"/>
         </interface>
      </interfaces>
      
  6. 起動確認

    portを80番で起動するため以下のコマンドで実行する

    sudo /opt/keycloak/bin/standalone.sh -Djboss.http.port=80
    
  7. サービスの登録

    • サービス用のファイルを作成

    # sudo vi /etc/systemd/system/keycloak.service
    
    • 以下の内容を追加

    [Unit]
    Description=Jboss Application Server
    After=network.target
    [Service]
    Type=idle
    Environment=JBOSS_HOME=/opt/keycloak
    JBOSS_LOG_DIR=/var/log/keycloak/ "JAVA_OPTS=-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true"
    User=root
    Group=root
    ExecStart=/opt/keycloak/bin/standalone.sh -Djboss.http.port=80
    TimeoutStartSec=600
    TimeoutStopSec=600
    [Install]
    WantedBy=multi-user.target
    
    • 設定ファイルの再読み込み

    # sudo systemctl daemon-reload
    
    • サービスの自動起動の有効化

    # sudo systemctl enable keycloak
    
    • サービスの起動

    # sudo systemctl start keycloak
    
  8. 管理者の追加

    ブラウザでログインする際に利用する管理者を登録します。
    今回のサンプルではsnowhiro - password にて作成しています。
    # /opt/keycloak/bin/add-user-keycloak.sh -r master -u snowhiro -p password
    
     Added 'snowhiro' to '/opt/keycloak/standalone/configuration/keycloak-add-user.json', restart server to load user
    
  9. ブラウザにて以下のURLにアクセスし、画面が表示されればOK

    http://your_ip_address/auth

    ../../_images/setup_001.png
  10. ログインする場合は「8. 管理者の追加」にて追加したユーザにてログインします。

    ../../_images/setup_002.png ../../_images/setup_003.png ../../_images/setup_004.png

以上でkeycloakの準備は完了です。