Keycloakを利用した複数アプリケーションのシングルサインオン実装
Keycloakを利用した複数アプリケーションのシングルサインオン実装方法を記述する。
目次
Keycloakを利用した複数アプリケーションのシングルサインオン実装
1.概要
オープンソースのアイデンティティ・アクセス管理ソフトウェア(IAM:Identity and Access Management)であるKeycloak(https://www.keycloak.org/)を用いて、
OAuth/OIDCに準拠した複数のWebアプリケーションに対するシングルサインオンを実装する方法について説明する。
2.システム構成図
OAuthで定義された登場人物とその役割は以下の通り。
・認可サーバ:リソースオーナーの認証および認可を行う。Keycloak
・リソースオーナー:リソースサーバ内のデータの所有者:ブラウザ
・クライアント:保護されたリソースにアクセスするアプリケーション:画面アプリA、画面アプリB
・リソースサーバ:リソースオーナが所有するデータが保管されておりAPIなどで返却する:APIアプリ
3.実装方法
OAuth/OIDCに準拠した複数のWebアプリケーションをKeycloakにクライアント(RP:Relying Party)として登録し、
どちらかのWebアプリケーションにログインしようとした際は、OAuth/OIDCのフローに沿って認証サーバであるKeycloakでログイン認証する。
認証成功によりKeycloakとセッション確立した後は、画面アプリAおよび画面アプリBのいずれも認証操作無しでログインが可能となり、シングルサインオンが可能となる。
4.シーケンス図(Oauthダンス)
Keycloakを用いて、複数(ここでは2つ:アプリA、アプリB)のアプリケーションに対するシングルログインが実現するシーケンス図は以下の通り。
5.関連実装方法
なお、シングルログアウト(SLO)については、フロントチャネルSLOパターンとバックチャネルSLOパターンがあり、
どちらかの方式(できればバックチャネルSLOパターン)でシングルログアウトを実装する事が望ましい。
OpenID Connect Front-Channel Logout 1.0:https://openid.net/specs/openid-connect-frontchannel-1_0.html
OpenID Connect Back-Channel Logout:https://openid.net/specs/openid-connect-backchannel-1_0.html