Keycloakを試す
このガイドは、プロダクション環境で使用する前に、Keycloakを使用して評価する練習に役立ちます。これには、Keycloakサーバーをスタンドアローン・モードでインストールする手順、ユーザーとアプリケーションを管理するためのアカウントとレルムを作成する手順、およびWildFlyサーバー・アプリケーションを保護する手順が含まれています。
Keycloakのサンプル・インスタンスのインストール
このセクションでは、スタンドアローン・モードでKeycloakサーバーのインストールと起動を実施した後、初期管理ユーザーを設定して、Keycloak管理コンソールにログインする方法について説明します。
サーバーのインストール
サーバーはLinuxまたはWindowsにインストールできます。サーバー・ダウンロードZIPファイルには、Keycloakサーバーを実行するためのスクリプトとバイナリーが含まれています。
-
Keycloak downloadsから keycloak-15.0.2.[zip|tar.gz] をダウンロードします。
-
選択したディレクトリーにファイルを配置します。
-
unzip、tar、Expand-Archiveなどの適切な
unzip
ユーティリティーを使用して、ZIPファイルを解凍します。Linux/Unix$ unzip keycloak-15.0.2.zip または $ tar -xvzf keycloak-15.0.2.tar.gz
Windows> Expand-Archive -Path 'C:Downloads\keycloak-15.0.2.zip' -DestinationPath 'C:\Downloads'
Keycloakサーバーの起動
インストールしたシステムでサーバーを起動します。
-
Keycloakサーバーのインストール中にエラーが発生していないこと
-
サーバー配布物の
bin
ディレクトリーに移動します。 -
standalone
起動スクリプトを実行します。Linux/Unix$ cd bin $ ./standalone.sh
Windows> ...\bin\standalone.bat
管理者アカウントの作成
Keycloakを使用する前に、Keycloak管理コンソールへのログインに使用する管理者アカウントを作成する必要があります。
-
Keycloakサーバー起動時にエラーが発生していないこと。
-
Webブラウザーで http://localhost:8080/auth を開きます。
ウェルカムページが開き、サーバーが実行中であることを確認します。
ウェルカムページ -
ユーザー名とパスワードを入力して、最初の管理ユーザーを作成します。
管理コンソールへのログイン
初期管理者アカウントを作成したら、管理コンソールにログインできます。このコンソールで、ユーザーを追加し、Keycloakによってセキュリティー保護されるアプリケーションを登録します。
-
管理コンソールの管理者アカウントを持っていること。
-
Welcome ページの Administration Console リンクをクリックするか、 http://localhost:8080/auth/admin/ (コンソールURL)に直接アクセスします。
Administration Consoleは、一般的にKeycloakのドキュメントでは管理コンソール(admin console)と呼ばれています。
-
Welcome ページで作成したユーザー名とパスワードを入力して、 admin console を開きます。
管理コンソールのログイン画面管理コンソールの初期画面が表示されます。
管理コンソール
管理コンソールにログインできるようになったので、管理者がユーザーを作成してアプリケーションへのアクセス権を付与できるレルムの作成を開始できます。詳細については、 レルムとユーザーの作成 を参照してください。
レルムとユーザーの作成
Keycloak管理コンソールの最初の使用は、レルムを作成し、そのレルムにユーザーを作成することです。そのユーザーを使用して新しいレルムにログインし、すべてのユーザーがアクセスできる組み込みのアカウント・コンソールにアクセスします。
レルムとユーザー
管理コンソールにログインしたら、オブジェクトを管理する領域であるレルムで作業します。レルムには2つのタイプがあります。
-
Masterレルム
- このレルムは、Keycloakの初回起動時に作成されます。初回ログイン時に作成した管理者アカウントが含まれています。このレルムは、他のレルムを作成するためにのみ使用します。 -
その他のレルム
- これらのレルムは、masterレルムの管理者によって作成されます。これらのレルムでは、管理者がユーザーとアプリケーションを作成します。アプリケーションはユーザーが所有します。
レルムの作成
masterレルムの管理者として、管理者がユーザーとアプリケーションを作成するレルムを作成します。
-
Keycloakがインストールされていること。
-
管理コンソールの初期管理者アカウントを持っていること。
-
http://localhost:8080/auth/admin/ に移動し、adminアカウントを使用してKeycloak管理コンソールにログインします。
-
Master のメニューから Add Realm を選択し、クリックします。masterレルムにログインすると、このメニューには他のすべてのレルムが一覧表示されます。
-
Name フィールドに
demo
と入力します。新規レルムレルム名では大文字と小文字が区別されるため、使用する値をメモしてください。 -
Create をクリックします。
メインの管理コンソールページが開き、レルムが
demo
に設定されます。Demoレルム -
Select realm ドロップダウン・リストのエントリーをクリックして、
master
レルムと作成したレルムの管理を切り替えます。
ユーザーの作成
demo
レルムで、新しいユーザーとその新しいユーザーの一時的なパスワードを作成します。
-
メニューから Users をクリックして、ユーザー一覧ページを開きます。
-
ユーザー追加ページを開くには、空のユーザーリストの右側にある Add User をクリックします。
-
Username
フィールドに名前を入力します。これは唯一の必須フィールドです。
ユーザー追加ページ -
Email Verified スイッチを On に切り替え、 Save をクリックします。
新しいユーザーの管理ページが開きます。
-
Credentials タブをクリックして、新しいユーザーの仮パスワードを設定します。
-
新しいパスワードを入力して確認します。
-
ユーザーのパスワードを指定した新しいパスワードにするには、Set Password をクリックします。
クレデンシャルの管理ページこのパスワードは一時的なもので、最初のログイン時に変更する必要があります。永続的なパスワードを作成する場合は、 Temporary スイッチを Off に切り替えて、 Set Password をクリックします。
アカウント・コンソールへのログイン
レルム内のすべてのユーザーは、アカウント・コンソールにアクセスできます。このコンソールを使用して、プロファイル情報を更新し、クレデンシャルを変更します。これで、作成したレルムでそのユーザーを使用してログインをテストできます。
-
ユーザーメニューを開き、 Sign Out を選択して、管理コンソールからログアウトします。
-
http://localhost:8080/auth/realms/demo/account に移動し、作成したユーザーとして
demo
レルムにログインします。 -
新しいパスワードの入力を求められたら、覚えやすいパスワードを入力します。
パスワードの更新このユーザーのアカウント・コンソールが開きます。
アカウント・コンソール -
このページを使用してテストするには、必要なフィールドに値を入力します。
これで、WildFlyで実行されるサンプル・アプリケーションをセキュリティー保護する最後の手順の準備ができました。 サンプル・アプリケーションのセキュリティー保護 を参照してください。
サンプル・アプリケーションのセキュリティー保護
これで、管理者アカウント、レルム、およびユーザーが作成されたので、Keycloakを使用してサンプルのWildFlyサーブレット・アプリケーションをセキュリティー保護できます。WildFlyクライアント・アダプターをインストールし、管理コンソールでアプリケーションを登録します。そして、Keycloakで動作するようにWildFlyインスタンスを変更し、いくつかのサンプルコードとともにKeycloakを使用してアプリケーションをセキュリティー保護します。
-
WildFlyとのポートの競合を回避するには、Keycloakが使用するポートを調整する必要があります。
Keycloakが使用するポートの調整
このガイドの手順は、Keycloakサーバーと同じマシンでWildFlyを実行する場合に適用されます。この状況では、WildFlyがKeycloakにバンドルされていても、WildFlyをアプリケーション・コンテナーとして使用することはできません。サーブレット・アプリケーション用に別のWildFlyインスタンスを実行する必要があります。
ポートの競合を回避するには、KeycloakとWildFlyを実行する異なるポートが必要です。
-
管理コンソールの管理者アカウントを持っていること。
-
demoレルムを作成していること。
-
demoレルムにユーザーを作成していること。
-
WildFly.org からWildFlyをダウンロードします。
-
ダウンロードしたWildFlyを解凍します。
$ unzip <filename>.zip
-
Keycloakのルート・ディレクトリーに移動します。
-
jboss.socket.binding.port-offset
システム・プロパティーの値を指定して、Keycloakサーバーを起動します。この値は、Keycloakサーバーによって開かれたすべてのポートのベース値に追加されます。この例では、 100 です。Linux/Unix$ cd bin $ ./standalone.sh -Djboss.socket.binding.port-offset=100
Windows> ...\bin\standalone.bat -Djboss.socket.binding.port-offset=100
Windows Powershell> ...\bin\standalone.bat -D"jboss.socket.binding.port-offset=100"
-
Keycloakサーバーが実行されていることを確認します。 http://localhost:8180/auth/admin/ にアクセスします。
管理コンソールが開いたら、WildFlyがKeycloakと連携できるようにするクライアント・アダプターをインストールする準備ができています。
WildFlyクライアント・アダプターのインストール
WildFlyとKeycloakが同じマシンにインストールされている場合、WildFlyにいくつかの変更が必要です。この変更を行うには、Keycloakクライアント・アダプターをインストールします。
-
WildFlyがインストールされていること。
-
../standalone/configuration/standalone.xml
をカスタマイズしている場合は、このファイルのバックアップがあること。
-
keycloak.org から WildFly OpenID Connect Client Adapter の配布物をダウンロードします。
-
WildFlyのルート・ディレクトリーに移動します。
-
ダウンロードしたクライアント・アダプターをこのディレクトリーに解凍します。たとえば次のようにします。
$ unzip <filename>.zip
-
binディレクトリーに移動します。
$ cd bin
-
使用しているプラットフォームに適したスクリプトを実行します。
file not found
が出力された場合は、前の手順でunzip
を使用したかどうかを確認してください。この解凍方法で、ファイルが適切な場所にインストールされます。Linux/Unix上のWildFly 10$ ./jboss-cli.sh --file=adapter-install-offline.cli
Windows上のWildFly 10> jboss-cli.bat --file=adapter-install-offline.cli
Linux/Unix上のWildFly 11$ ./jboss-cli.sh --file=adapter-elytron-install-offline.cli
Windows上のWildFly 11> jboss-cli.bat --file=adapter-elytron-install-offline.cli
このスクリプトは、
…/standalone/configuration/standalone.xml
ファイルを必要に応じて編集します。 -
アプリケーション・サーバーを起動します。
Linux/Unix$ ./standalone.sh
Windows> ...\standalone.bat
WildFlyアプリケーションの登録
これで、Keycloak管理コンソールでクライアントを定義および登録できます。
-
WildFlyで動作するようにクライアント・アダプターをインストールしていること。
-
管理者アカウントで管理コンソールにログインします: http://localhost:8180/auth/admin/
-
左上のドロップダウン・リストで
Demo
レルムを選択します。 -
左側のメニューの
Clients
をクリックして、クライアント・ページを開きます。Clients -
右側にある Create をクリックします。
-
Add Clientダイアログで、次のようにフィールドに入力して、 vanilla というクライアントを作成します。
Add Client -
Save をクリックします。
-
表示される Vanilla クライアントページで、 Installation タブをクリックします。
-
Keycloak OIDC JSON を選択して、後の手順で必要なファイルを生成します。
Keycloak.jsonファイル -
Download をクリックして Keycloak.json を後で見つけられる場所に保存します。
-
XMLテンプレートを生成するには、 Keycloak OIDC JBoss Subsystem XML を選択します。
XMLテンプレート -
次の手順で使用するために、 Download をクリックしてWildFlyの設定を含むコピーを保存します。
WildFlyインスタンスの変更
WildFlyサーブレット・アプリケーションは、Keycloakによってセキュリティー保護される前に追加の設定が必要です。
-
demo レルムに vanilla という名前のクライアントを作成していること
-
このクライアントのテンプレートXMLファイルを保存していること。
-
WildFlyのルート・ディレクトリーの
standalone/configuration
ディレクトリーに移動します。 -
standalone.xml
ファイルを開き、次のテキストを検索します。<subsystem xmlns="urn:jboss:domain:keycloak:1.1"/>
-
次に示すように、自己終了のXMLエントリーを開始タグと終了タグのペアを使用するように変更します。
<subsystem xmlns="urn:jboss:domain:keycloak:1.1"> </subsystem>
-
この例に示すように、
<subsystem>
の要素内のXMLテンプレートの内容をペーストします。<subsystem xmlns="urn:jboss:domain:keycloak:1.1"> <secure-deployment name="WAR MODULE NAME.war"> <realm>demo</realm> <auth-server-url>http://localhost:8180/auth</auth-server-url> <public-client>true</public-client> <ssl-required>EXTERNAL</ssl-required> <resource>vanilla</resource> </secure-deployment> </subsystem>
-
WAR MODULE NAME.war
をvanilla.war
に変更します。<subsystem xmlns="urn:jboss:domain:keycloak:1.1"> <secure-deployment name="vanilla.war"> ... </subsystem>
-
アプリケーション・サーバーを再起動します。
アプリケーションをセキュリティー保護するためのサンプルコードのインストール
最後の手順は、https://github.com/keycloak/keycloak-quickstartsリポジトリーからいくつかのサンプルコードをインストールして、このアプリケーションをセキュリティー保護することです。クイックスタートは最新リリースのKeycloakで機能します。
サンプルコードは app-profile-jee-vanilla クイックスタートです。WARを変更せずに、基本認証で保護されているJavaEEアプリケーションを変更する方法を示します。Keycloakクライアント・アダプター・サブシステムは認証方式を変更し、設定をインジェクトします。
次のものがマシンにインストールされており、PATHで使用できること。
-
Java JDK 8
-
Apache Maven 3.1.1以上
-
Git
keycloak.json ファイルがあること
-
WildFlyアプリケーション・サーバーが起動していることを確認してください。
-
次のコマンドを使用して、コードをダウンロードし、ディレクトリーを変更します。
$ git clone https://github.com/keycloak/keycloak-quickstarts $ cd keycloak-quickstarts/app-profile-jee-vanilla/config
-
keycloak.json
ファイルを現在のディレクトリーにコピーします。 -
1つ上のレベルの
app-profile-jee-vanilla
ディレクトリーに移動します。 -
次のコマンドを使用してコードをインストールします。
$ mvn clean wildfly:deploy
-
アプリケーションのインストールが成功したことを確認します。ログインページが表示される http://localhost:8080/vanilla に移動します。
ログインページの確認成功 -
demoレルムで作成したアカウントを使用してログインします。
demoレルムへのログインページKeycloakを正常に使用してサンプルのWildFlyアプリケーションをセキュリティー保護したことを示すメッセージが表示されます。おめでとうございます!
完全な成功