連載
» 2019年04月03日 05時00分 公開

Keycloak超入門(8):Keycloakで認可サービスを試してみよう[前編] (2/3)

[和田広之, 相田洋志, 田村広平, 上田直樹, 青柳隆,野村総合研究所/野村総合研究所/フリーランス/株式会社リック/フリーランス]

認可サービス動作環境の構築

 では、実際に集中管理方式によるアクセス制御の動作を検証してみましょう。今回は、認可サービスの動作確認に当たり、Tomcatのクライアントアダプターを使用したKeycloak環境を構築していきます。前回と同様にスムーズに構築するため、「Docker Compose」を利用します。

)今回構築する環境にはUMA方式の検証環境も含まれており、次回のUMA方式の動作検証でそのまま利用します。


●構築の概要

 今回構築する構成は、図3のようになります。

図3 図3 今回構築する検証環境の構成

 次に、構成するDockerコンテナは、表3の通りです。

コンテナ名 役割 ポート 利用イメージ イメージ構成補足
kc-example-lb ロードバランサー(SSLアクセレーター) 443/80 jwilder/nginx-proxy:latest SSLを復号し、構成されるWebアプリコンテナにプロキシするDockerイメージ
kc-example-db Keycloakデータベース 3306 mysql:5.7 MySQL公式のDockerイメージ
kc-example-op Keycloak本体 8080 jboss/keycloak:4.8.3.Final JBoss公式のDockerイメージに、あらかじめ準備したKeycloak設定をインポートするように構成
kc-example-app1 Tomcat
クライアントアダプター
認可サンプルアプリ
8081 library/tomcat:8.5.37-jre8 Tomcat公式のDockerイメージに、認可サンプルアプリをデプロイするように構成
kc-example-app2 Tomcat
クライアントアダプター
UMAサンプルアプリ
8082 library/tomcat:8.5.37-jre8 Tomcat公式のDockerイメージに、UMAサンプルアプリをデプロイするように構成(※こちらのアプリは、次回第9回の検証で利用します)
表3 構成するDockerコンテナ一覧

 そして、作成するユーザーは、表4の通りです。

ユーザー名 パスワード 電子メール 役割 レルム ロール グループ
admin password Keycloak管理者 master admin
user001 password user001@example.com 一般ユーザー authz
user002 password user002@test.example.com 一般ユーザー authz nri
user003 password user003@example.com 一般ユーザー openstandia
admin001 password admin001@example.com 管理者 admin
admin002 password admin002@test.example.com 管理者 admin nri
admin003 password admin003@example.com 管理者 admin openstandia
表4 ユーザー一覧

 集中管理方式の動作確認で利用するコンテンツは、表5の通りです。

コンテンツ アクセス制御 アクセス制御メカニズム URI 用途
認可サービスアプリ 認証必要 /authz-app/
ロールベースアクセス制御 /authz-app/role/admin/ 特定のロール(admin)を持つユーザーにアクセスを限定
ユーザーベースアクセス制御 /authz-app/user/user001/ 特定のユーザー(user001)にアクセスを限定
ロールベースアクセス制御 /authz-app/group/openstandia/ 特定のグループ(openstandia)に所属するユーザーにアクセスを限定
属性ベースアクセス制御 /authz-app/attr/test/ 電子メールに特定の値(@test.example.com)を含むユーザーにアクセスを限定
時間ベースアクセス制御 /authz-app/time/lunch/ 特定の時間帯だけにアクセスを限定
表5 https://authz.example.comのコンテンツ一覧

●前提条件

 今回も、「Docker CE」とDocker Composeがインストールされていることが、前提条件となります。導入されていない方は、本連載第7回を参考にインストールしてください。

●事前準備

 今回は、Docker CEおよびDocker Composeを使用して構築を行いますが、このDockerホストとなるCentOSへFQDNでアクセスできるように、クライアントマシンのhostsファイルに設定を追加します。

xxx.xxx.xxx.xxx sso.example.com authz.example.com uma.example.com


 「xxx.xxx.xxx.xxx」の部分はCentOSのIPアドレスです。

●構築手順

 まずは、今回公開したDockerビルドファイルを任意の場所にダウンロードし、解凍します。

# wget https://github.com/openstandia/keycloak-dockerfiles/archive/at_sign_it-8_9th-example.zip
# unzip at_sign_it-8_9th-example.zip

 次に、検証用のアプリケーションをビルドします。

# cd keycloak-dockerfiles-at_sign_it-8_9th-example/client_adapter-based-arch-examples/kc-tomcat-adapter-example/
# mvn clean package -f tomcat1/authz-app/pom.xml
# mvn clean package -f tomcat2/authz-uma-api/pom.xml
# mvn clean package -f tomcat2/authz-uma-client/pom.xml

 Dockerイメージをビルドし、Dockerコンテナを起動します。

# docker-compose up -d --build
Creating network "kc-tomcat-adapter-example_default" with the default driver 
〜省略〜
Creating kc-example-db ... done
Creating kc-example-op ... done
Creating kc-example-app1 ... done
Creating kc-example-app2 ... done
Creating kc-example-lb   ... done

 そして、Dockerコンテナのログを監視し、Keycloakが起動完了したことを確認します(起動完了が分かりやすいようにKeycloakのログ出力に限定します)。

# docker-compose logs -f op
〜省略〜
kc-example-op | 07:19:21,551 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: Keycloak 4.8.3.Final (WildFly Core 6.0.2.Final) started in 88798ms - Started 670 of 930 services (649 services are lazy, passive or on-demand)

 続いて、クライアントアダプターが同梱されているTomcatのコンテナの起動を2つとも確認します(今回の構築環境のTomcatはKeycloakへSSL接続が可能になった後で、起動するように調整しているため、起動完了までに多少時間がかかります)。

# docker-compose logs -f app1 app2
〜省略〜
kc-example-app1 | 14-Feb-2019 02:22:29.062 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 24050 ms
〜省略〜
kc-example-app2 | 14-Feb-2019 02:22:40.765 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 36169 ms

 最後に、コンテナが全て起動していることを確認します。

# docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED              STATUS              PORTS                                      NAMES
c6c651074a4b        kc-tomcat-adapter-example_lb     "/app/docker-entrypo…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   kc-example-lb
04fc26df6000        kc-tomcat-adapter-example_app1   "bash /wait-for-kc.sh"   About a minute ago   Up About a minute   0.0.0.0:8081->8080/tcp                     kc-example-app1
5dc326eaaff2        kc-tomcat-adapter-example_app2   "bash /wait-for-kc.sh"   About a minute ago   Up About a minute   0.0.0.0:8082->8080/tcp                     kc-example-app2
13f9d050de04        kc-tomcat-adapter-example_op     "/opt/jboss/tools/do…"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp                     kc-example-op
10f36c0d0714        kc-tomcat-adapter-example_db     "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, 33060/tcp          kc-example-db

 これで、Keycloakの認可サービス動作環境の構築が完了です。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。