必要なアプリケーションが起動したら、ここまで作成してきたアプリケーションの動作を確認していきます。作成したアプリケーションがKeycloakと連携していること、ユーザーのロールによるアクセス制御が有効になっていることを確認します。
まずは、クライアントアプリケーションにアクセスします。Webブラウザから「http://localhost:9000/」にアクセスします。そして、Keycloakで保護されたパスにアクセスするため「Start Application」をクリックしてください。
「Start Application」をクリックすると、Keycloakのログイン画面にリダイレクトされます。このログイン画面から、登録したユーザー(user01またはadmin)でログインします。まずはadminユーザーでログインしてみましょう(画面9)。
ログインに成功すると、ログインしたユーザーの名前やロールが表示されます(画面10)。また、クライアントアプリケーションが内部でアクセスした「/service/user」および「/service/admin」へのAPIリクエスト結果が表示されます。セッションにログイン情報が保存されているため、クライアントアプリケーションの「/app/user」や「/app/admin」にもそのままアクセスできるようになっています。
次は、APIサーバおよびクライアントアプリケーションのアクセス制御を確認します。今回のアプリケーションでは、adminユーザーは全てのAPIを実行でき、全てのページを表示できるようになっています。
一方、user01ユーザーはAPIサーバの「/service/admin」APIの実行と、クライアントアプリケーションの「/app/admin」ページへのアクセスが制限される設定になっています。画面下部のボタンからログアウトして、今度はuser01としてログインしてみましょう。
user01ユーザーでログインすると、ページへのアクセスは許可されているので表示されますが、「/service/admin」へのリクエストが失敗しているためAdmin Requestの結果が表示されません(画面11)。
このとき、APIアクセスの失敗により、クライアントアプリケーションでは以下のようなエラーログが表示されます。
org.springframework.web.client.HttpClientErrorException: 403 Forbidden
また、この状態で「/app/admin」にアクセスすると、権限が足りないためエラーページが表示されます(画面12)
このように、ログインしたユーザーが持つロールによって、クライアントアプリケーション、APIサーバの両方でアクセス制御ができることが確認できました。
次回は、Keycloakにおけるクラスタリングについて紹介します。
株式会社日立製作所 OSSソリューションセンタ所属。これまではソフトウェアエンジニアとしてストレージやサーバの管理ソフトウェア開発に従事してきた。現在は、主にアイデンティティー管理OSSやAPI管理OSSの検証、導入支援を行っている。
Copyright © ITmedia, Inc. All Rights Reserved.