「Federated Logout」は、OIDC(OpenID Connect)認証において複数の認証システムやプロバイダが連携している環境で、統一的にログアウト処理を行うための仕組みです。このログアウト方式は、シングルサインオン(SSO)環境において特に重要です。
目的
- 統一的なセッション終了: Federated Logoutの主な目的は、ユーザーがIdP(アイデンティティプロバイダ)でログアウトした際に、他の連携しているクライアントや認証システムのセッションも同時に終了することです。これにより、セキュリティとユーザー体験が向上します。
- SSO環境の一貫性: SSO環境で複数のアプリケーションやサービスにログインしているユーザーが、あるサービスでログアウトすると、すべてのサービスで一貫してログアウトが実施されることで、セッション管理が一元化されます。
- セキュリティ向上: 連携するすべてのサービスでセッションを終了することで、意図しないセッションの残存や不正アクセスのリスクを低減します。
特徴
- 連携したログアウト処理: Federated Logoutは、IdPがログアウトリクエストを受けると、そのIdPに連携している他の認証システムやサービスに対してもログアウト通知を送信します。これにより、ユーザーが1つのシステムでログアウトした際に、他のサービスも同時にセッションを終了します。
-
複数方式の組み合わせ:
- Front-Channel Logout: ブラウザを介したログアウト通知を組み合わせることが多いです。
- Back-Channel Logout: よりセキュアなサーバー間通信を使った通知が行われることもあります。
- ログアウトリクエストの伝播: ログアウトは、IdPが受けたログアウトリクエストを起点として連携するクライアントやシステムに伝播します。これにより、連携した全てのクライアントがセッション終了を実施します。
- ユーザー体験の向上: ユーザーは一度のログアウト操作で、全ての関連するサービスからログアウトできるため、ログアウト操作を繰り返す必要がなく利便性が高いです。
実装の流れ
- ログアウトリクエスト: ユーザーがOIDCプロバイダでログアウト操作を行います。
- 通知の送信: IdPは、連携しているクライアントや他のプロバイダに対してログアウトリクエストを送信します。これは、iframeを介したFront-Channel方式や、サーバー間通信を使用するBack-Channel方式で行われます。
- セッションの無効化: 各クライアントやシステムは、通知を受けて該当するユーザーのセッションを無効化します。
- リダイレクト: ログアウト完了後、指定されたURLにユーザーをリダイレクトすることが一般的です。
利点と課題
利点:
- セキュリティの強化: 意図しないセッションの残存を防ぎ、セッション管理を一元化できる。
- SSOの一貫性: すべての連携サービスでログアウト状態が保持される。
- 利便性向上: ユーザーは一度の操作で、すべての連携サービスからログアウトできる。
課題:
- 実装の複雑さ: 各クライアントやシステムがFederated Logoutに対応している必要があり、実装が複雑になることがある。
- 通信の信頼性: Front-Channel方式ではブラウザを介した通知の信頼性やネットワーク状態に依存する。
- セキュリティ対応: ログアウト処理に関してCSRFなどの攻撃に対する対策を考慮する必要がある。
Federated Logoutは、特にSSO環境において一貫性とセキュリティを高め、ユーザー体験を向上させるための重要な仕組みです。