Keycloak の Getting Started Guide をやっていく。
前提
- OS: Windows 10 Pro
- Docker: Docker version 18.09.2, build 6247962
- 使用イメージ: debian:buster-slim
- Keycloak: 6.0.1
事前準備
コンテナ起動
docker run -it --rm -p "80:80" -p "8080:8080" -p "9080:9080" debian:buster-slim
80
: アプリケーションサーバーポート8080
: keycloak ポート9080
: アプリケーションサーバー管理用ポート
必要なパッケージを取得
apt-get update
apt-get upgrade -y
mkdir -p /usr/share/man/man1
apt-get install -y curl openjdk-11-jdk
※ openjdk は、 headless だとサンプルアプリのデプロイでエラーが発生するため、今回は普通のものをインストールする。
keycloak の準備
keycloak のインストール
ダウンロード
curl -L https://downloads.jboss.org/keycloak/6.0.1/keycloak-6.0.1.tar.gz -O
配置
tar xf ./keycloak-6.0.1.tar.gz -C /opt
初期設定
初期ユーザー作成
ユーザー mikoto
を追加。
root@dd4775da3619:/# /opt/keycloak-6.0.1/bin/add-user-keycloak.sh -u mikoto
Press ctrl-d (Unix) or ctrl-z (Windows) to exit
Password:
Added 'mikoto' to '/opt/keycloak-6.0.1/standalone/configuration/keycloak-add-user.json', restart server to load user
すでに keycloak サーバーを起動してしまっている場合は、サーバーを再起動するとユーザーが有効になる。
keycloak の起動
/opt/keycloak-6.0.1/bin/standalone.sh -Djboss.bind.address=0.0.0.0 -Djboss.http.port:8080 -Djboss.https.port=8523 -Djboss.bind.address.management=0.0.0.0 -Djboss.management.http.port=9000 -Djboss.management.https.port=9443
各引数の意味はこんな感じ。
-Djboss.bind.address=0.0.0.0
: keycloak の listen アドレス。今回は Docker を使っているので、どこからでもアクセスできるように0.0.0.0
を設定。-Djboss.http.port=8080
,-Djboss.https.port=8523
: keycloak 接続ポート-Djboss.bind.address.management=0.0.0.0
: keycloak が動いている WildFly の管理用ページ(?) の listen アドレス。今回は Docker を使っているので、どこからでもアクセスできるように0.0.0.0
を設定。-Djboss.management.http.port=8080
,-Djboss.management.http.port=9443
: keycloak が動いている WildFly の管理用ポート
その他、ポート番号はオフセットで指定することもできる。こっちのほうが楽そう。
-Djboss.socket.binding.port-offset=10000
Realm とユーザーの追加
http://localhost:8080
に接続し、 Realm とユーザーを追加する。
Realm の追加
- 左上の
Master
のドロップダウンを選択 Add realm
ボタン押下- realm の設定を入力
Name
:demo
Enabled
:ON
Create
押下- 左上のドロップダウンが
Demo
に変わっているのを確認
Realm に対するユーザーの追加
- 左のサイドメニューの
Users
を選択 Add user
ボタン押下- ユーザー情報の追加
Username
:demo_user
User Enabled
:ON
Save
押下
Credentials
タブを選択- パスワード設定
New Password
,Password Confirmation
を設定Reset Password
押下Change password
押下
アプリケーションの準備
アプリケーション用 WildFly のインストール
WildFly のダウンロードと展開
curl -L https://download.jboss.org/wildfly/17.0.1.Final/wildfly-17.0.1.Final.tar.gz -O
tar xf wildfly-17.0.1.Final.tar.gz
WildFly OpenID Connect adapter のダウンロード・展開
curl -L https://downloads.jboss.org/keycloak/6.0.1/adapters/keycloak-oidc/keycloak-wildfly-adapter-dist-6.0.1.tar.gz -O
tar xf keycloak-wildfly-adapter-dist-6.0.1.tar.gz -C wildfly-17.0.1.Final
WildFly OpenID Connect adapter のインストール
cd ./wildfly-17.0.1.Final/bin
./jboss-cli.sh --file=adapter-install-offline.cli
WildFly の実行
./standalone.sh -Djboss.bind.address=0.0.0.0 -Djboss.http.port=80 -Djboss.https.port=443 -Djboss.bind.address.management=0.0.0.0 -Djboss.management.http.port=9080 -Djboss.management.https.port=9523
keycloak を利用するアプリケーションの準備
keycloak を利用する側のアプリを準備。 keycloak の quickstarts のアプリを使う。
ソース取得
apt-get install -y git maven
git clone https://github.com/keycloak/keycloak-quickstarts
ビルド・デプロイ
cd keycloak-quickstarts/app-profile-jee-vanilla
mvn clean wildfly:deploy -Dwildfly.port=9080 -Dmaven.compiler.target=11 -Dmaven.compiler.source=11
demo_user がまだ許可されていないことを確認
http://localhost/vanilla
にアクセス。
LOGIN ボタンを押すと、 BASIC 認証ダイアログが表示される。demo_user のユーザー名・パスワードでログインできないことを確認。
アプリケーションと demo Realm の紐づけ
アプリケーションと demo Realm を紐づけて、 demo Realm の情報でログインできるようにする。
keycloak 側の設定
- demo realm ->
Clients
を選択 Create
押下- クライアント情報入力
Client ID
:vanilla
Client Protocol
:openid-connect
Root URL
:http://localhost/vanilla
Save
押下
Installation
タブ選択Format Option
:Keycloak OIDC JBoss Subsystem XML
アプリケーションサーバー側の設定
/wildfly-17.0.1.Final/standalone/configuration/standalone.xml
を編集する。
<subsystem xmlns="urn:jboss:domain:keycloak:1.1"/>
を探して、以下のように修正する。
<subsystem xmlns="urn:jboss:domain:keycloak:1.1">
<secure-deployment name="vanilla.war">
<realm>demo</realm>
<auth-server-url>http://localhost:8080/auth</auth-server-url>
<public-client>true</public-client>
<ssl-required>EXTERNAL</ssl-required>
<resource>vanilla</resource>
</secure-deployment>
</subsystem>
アプリケーションサーバーを再起動すると、この設定が有効になる。
demo_user でログインできることを確認
http://localhost/vanilla
にアクセス。
LOGIN ボタンを押すと、 keycloak のログイン画面が表示される。
demo_user のユーザー名・パスワードでログインできることを確認。 初回ログインなのでパスワードの更新を求められる。
ログインが完了すると、次のような画面が表示される。
以上。
アプリケーションサーバー管理用ポートを開けて、サンプルアプリケーションのビルド・デプロイはホスト側でやるというのもありですね。
0 件のコメント:
コメントを投稿