Keycloakクライアントアダプターを利用してAPIサービスを構築してみよう:Keycloak超入門(3)(4/4 ページ)
本連載では、近年注目されている認証プロトコル「OpenID Connect」をサポートするオープンソースのシングルサインオン(SSO)ソフトウェア「Keycloak」の活用方法を解説していきます。今回は、Keycloakクライアントアダプターを利用して、APIサービスを構築してみます。
アプリケーションの動作確認
必要なアプリケーションが起動したら、ここまで作成してきたアプリケーションの動作を確認していきます。作成したアプリケーションが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.
関連記事
- なぜ「シングルサインオン」が必要なのか?
企業でのWebサービスの実現が具体的になるにつれ、パスワード/IDマネジメントが重視されるようになり、「シングル・サインオン」がますます注目を集めている。この連載では、シングル・サインオンの実践ステップなど具体的な考え方を紹介する。また、メタディレクトリやLDAPなど「ディレクトリ統合」をキーワードとしてシングル・サインオンを実現するための技術を分かりやすく解説する。(編集部) - 第1回 もはや企業のID管理で避けては通れない「IDaaS」とは?
これまで社内設置が当たり前だったアイデンティティ(ID)管理/認証システム。でも「クラウド」「モバイル」に代表される激烈な変化に対応できる、と本当に思っていますか? ID管理/シングルサインオンの新たな選択肢「IDaaS」について解説する連載開始! - 強力なSSOを実現するXML認証・認可サービス(SAML)
- OpenIG、OpenDJと連携したOpenAMの新機能
今回は、OpenAMの姉妹製品で既存アプリケーションを改修せずにシングルサインオンを可能にする「OpenIG」と、OpenAMのデフォルトデータストアである「OpenDJ」について解説します。