Keycloakのダウンロードサイトから「Old examples」という名前のZIPファイルをダウンロードします。他に「Quickstarts distribution」という名前のファイルもありますが、Old examplesは設定が簡単で内容もシンプルなので、今回はこちらを使用します。
今回は「keycloak-examples-3.2.0.Final/preconfigured-demo」以下にあるアプリケーションを利用して、KeycloakによるSSOの機能を確認します。これらのアプリケーションはKeycloakを実行しているWildfly上で動作させるため、別途APサーバを用意する必要はありません。
今回使用するサンプルアプリケーションは「product-app」「customer-app」「database-service」の3つです。
product-appとcustomer-appは、それぞれWebブラウザからアクセスするアプリケーションです。どちらも「Keycloakクライアントアダプター」によってアクセスが制限されており、特定のURLにアクセスするためには、Keycloakからの認可情報が必要になります。また、同じくKeycloakクライアントアダプターでアクセスが制限されたdatabase-serviceアプリケーションから情報を取得し、その内容をWebブラウザ上に表示します。
database-serviceは、「/customers」「/products」というエンドポイントを提供するAPIサーバとして動作します。database-serviceもKeycloakによってアクセスが制限されており、Keycloakから発行されたアクセストークンが付いたアクセスにのみレスポンスを返します。
サンプルアプリケーションを起動する前に、Keycloakに対して以下の設定を行います。
今回のサンプルアプリケーションは、Keycloakの「Wildflyアダプター」を利用します。そのため、Keycloakに付属するWildflyに、クライアントアダプターをインストールする必要があります。Wildflyアダプターは、Keycloakのダウンロードサイトからダウンロードします。今回は「keycloak-wildfly-adapter-dist-3.2.0.Final.zip」(Wildfly 9/10向けのクライアントアダプター)が必要になります。ダウンロードしたファイルは、Keycloakのディレクトリで解凍します。
# <keycloak.home>は適宜変更してください。 $ cp keycloak-wildfly-adapter-dist-3.2.0.Final.zip <keycloak.home> $ cd <keycloak.home> $ unzip keycloak-wildfly-adapter-dist-3.2.0.Final.zip
ファイルを解凍後に以下のコマンドを実行して、WildflyサーバにKeycloakクライアントアダプターをインストールします。
$ ./bin/jboss-cli.sh --file=bin/adapter-install-offline.cli
これでクライアントアダプターのインストールが完了しました。
サンプルアプリケーションを起動する前には、これらアプリケーションの情報をKeycloakに登録しておく必要があります。サンプルケーションには「testrealm.json」というファイルが付属していますが、これはサンプルアプリケーション向けのKeycloak設定内容をエクスポートしたものになります。このファイルをKeycloakにインポートします。
ファイルをインポートするには、まず、Keycloakの「Administration Console」にログインし、画面左上の「Master」と表示されている部分にマウスを移動します。すると「Add realm」というボタンが表示されるので、これをクリックして「Realm」作成画面に移動します。
Realm作成画面で「Import」メニューからサンプルアプリケーションに付属している「preconfigured-demo/testrealm.json」ファイルを選択し、設定項目をインポートします(画面3)。
これでサンプルアプリケーションの設定が完了しました。
ここまでの設定が完了したら、いよいよサンプルアプリケーションを実行します。サンプルアプリケーションは、Mavenで下記のコマンドを実行することでデプロイできます。
$ mvn wildfly:deploy
Mavenでのデプロイが完了したら、各サンプルアプリケーションへのアクセスを確認します。Webブラウザから以下のURLへアクセスしてみてください。なお、database-serviceだけは「Unauthorized」と表示されます。
アプリケーション | URL |
---|---|
product-app | http://localhost:8080/product-portal/ |
customer-app | http://localhost:8080/customer-portal/ |
database-service | http://localhost:8080/database/ |
ここまでで、サンプルアプリケーションの準備が終わりました。次は実際にアプリケーションにアクセスし、Keycloakによる認可処理の流れを確認していきます。
Copyright © ITmedia, Inc. All Rights Reserved.