Install Keycloak 4.8.3 on CentOS 7
この記事について
本記事は、CentOS 7.x への Keycloak 4.8.3 のインストールについて記載しています。
対象読者
- SSO (シングルサインオン) に興味がある方
- OIDC (OpenID Connect) に興味がある方
- SAML (Security Assertion Markup Language) に興味がある方
Keycloak とは
Keycloak(キークローク)とは、最新のアプリケーションとサービスを目的としたオープンソースのIDおよびアクセス管理ソリューションです。
※詳細は、公式サイト をご確認ください。
SSO や API アクセスの認証・認可制御を実現することができます。
対応する SSO 機能
- OpenID Connect
- OAuth 2.0
- SAML 2.0
- LDAP 連携
- Active Directory 連携
※Google や Twitter などのアカウントを使用したログインにも対応しています。
ライセンス
Keycloak は Apache License 2.0 で提供されています。※GitHub
インストール
基本的に、公式ガイドに記載されている手順通りに進めます。
環境
- OS:CentOS 7.5
システム要件
Keycloak を構築するのに必要なシステム要件は、以下の通りです。
- Java 8 JDK
- RAM 512GB 以上
- 1GB 以上のディスクスペース
OpenJDK 8 のインストール
Keycloak の動作には、Java 8 JDK が必要 になります。
インストールされていない場合は、Java 8 JDK をインストールします。
※本書では、OpenJDK 8 を使用します。
Java インストール有無の確認
環境に Java がインストールされているかどうか確認します。
既に Java 8 JDK がインストールされている場合は、以下のようなメッセージが表示されます。
# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Java 8 がインストールされていない場合は、下記コマンドを使用して、OpenJDK 8 をインストールしてください。
# yum install -y java-1.8.0-openjdk
Keycloak のダウンロード
公式サイト より、最新の Keycloak の圧縮ファイルをダウンロードします。
Keycloak 圧縮ファイルの解凍
ダウンロードした Keycloak の圧縮ファイルを解凍します。
※ ファイルは、/opt
以下に配置します。
# cd /opt
# unzip keycloak-4.8.3.Final.zip
# mv keycloak-4.8.3.Final keycloak
ファイアウォールの設定
外部から Keycloak にアクセスできるよう、ファイアウォールの設定を行います。
# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --zone=public --add-service=https --permanent
# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# firewall-cmd --reload
管理者ユーザーの作成
Keycloak の管理者ユーザーを作成します。
# /opt/keycloak/bin/add-user-keycloak.sh -r master -u admin -p admin
-u オプションでユーザー名
、-p オプションでパスワード
を設定しています。
こちらは任意で変更してください。
Keycloak の起動
Keycloak Server を起動します。
# /opt/keycloak/bin/standalone.sh -b=0.0.0.0
起動オプションに -b=0.0.0.0
を付与しているのは、すべてのホストからのアクセスを許可しているためです。
Keycloak は WildFly という RedHat が中心になって開発している Java EE コンテナが同梱されています。FildFly は、デフォルト設定ではリモートホストからのアクセスを許可していません。
Keycloak は、この WildFly の上で動作しているため、-b オプションでアクセスを許可するホストを指定
する必要があります。
コマンド実行後、以下のようなメッセージが表示されれば、起動に成功しています。
05:22:25,628 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
05:22:25,628 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
05:22:25,628 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: Keycloak 4.8.3.Final (WildFly Core 6.0.2.Final) started in 14037ms - Started 577 of 834 services (557 services are lazy, passive or on-demand)
管理コンソールへのログイン
起動に成功したら、管理コンソールへアクセスします。
http://<host-name-or-IP>:8080/auth
- <host-name-or-IP>:OSのホスト名、またはIPアドレス
正常にアクセスできた場合、以下のような画面が表示されます。
Administration Console を選択して、ログイン画面に移動します。
add-user-keycloak.sh 実行時に入力したユーザー名、パスワードを入力して、Keycloak にログインします。
日本語化対応
Keycloak は、国際化対応で日本語にも対応しています。
Realm Settings -> Themes に移動します。
Internationalization Enabled を ON にし、Default Locale を ja に変更します。
変更後、いったんシステムからログアウトしてください。
※キャッシュの都合上、変更が即時反映されない場合があります。
再度、ログイン画面に戻ると、画面表示が日本語に切り替わっているのを確認できます。
サービス登録
サーバー起動時に、Keycloak が自動起動するための設定を行います。
/etc/systemd/system/keycloak.service
の12行目にある-b オプション
については、前述同様です。
[Unit]
Description=Jboss Application Server
After=network.target
[Service]
Type=idle
Environment=JBOSS_HOME=/opt/keycloak JBOSS_LOG_DIR=/var/log/keycloak "JAVA_OPTS=
-Xms1024m -Xmx20480m -XX:MaxPermSize=768m"
User=keycloak
Group=keycloak
ExecStart=/opt/keycloak/bin/standalone.sh -b=0.0.0.0
TimeoutStartSec=600
TimeoutStopSec=600
[Install]
WantedBy=multi-user.target
# mkdir /var/log/keycloak
# useradd --system --user-group keycloak
# chown -R keycloak:keycloak /opt/keycloak
# chown -R keycloak:keycloak /var/log/keycloak
# chmod -R g+w /opt/keycloak
# chmod -R g+w /var/log/keycloak
# systemctl daemon-reload
# systemctl enable keycloak
# systemctl start keycloak
Discussion