🗝️

OpenID Connect RP-Initiated Logout メモ

2023/12/10に公開

OIDC の SLO(シングルログアウト) について勉強メモ (RP-Initiated Logout)

OIDC の セッション関連の仕様

  • RP-Initiated Logout
    • PR 起点のログアウト
    • RP からエンドユーザーのユーザーエージェントを OP のログアウトエンドポイントにリダイレクトすることで、OP がエンドユーザーをログアウトするように要求する
  • Front-Channel Logout
    • OP でログイン済みRPに通信してエンドユーザーをRPからログアウトさせる
  • Back-Channel Logout
    • OPからログアウトしたことをログイン中のRPにバックエンド間通信で通知し、エンドユーザーをRPからログアウトさせる

RP-Initiated Logout

  1. RP は OP から RP-Initiated Logout 用に提供された URI に、ユーザーエージェントをアクセスさせる。ログアウト後の遷移先となる RP のURI (post_logout_redirect_uri)などのパラメータをクエリ指定できる
    • OP のログアウトエンドポイントにリダイレクトする前に、エンドユーザーをログアウトするかどうかは RP 次第
  2. OP は渡されたパラメータを検証する
  3. OPはユーザーに「ログアウトするかどうか」確認し、同意された場合にログアウト
    • SSO 中の他の RP にログアウトを通知する方法は、以下がある
      • OpenID Connect Session Management
      • OpenID Connect Front-Channel Logout
      • OpenID Connect Back-Channel Logout
  4. post_logout_redirect_uri にRPからのリダイレクトで受け取ったstateを付与してリダイレクト
  5. RPはstateを検証

  • id_token_hint
    • Recommended
    • OPによって以前にRPに発行されたIDトークン
    • RPがOPによるログアウトを要求しているエンドユーザーのIDを示すために使用
  • post_logout_redirect_uri
    • Optional
    • ログアウト実行後、RPがエンドユーザーのユーザーエージェントのリダイレクトを要求するURL
    • OPに事前登録
    • このパラメーターが含まれている場合は、id_token_hintも必要
  • state
    • Optional
    • post_logout_redirect_uriで指定されたエンドポイントへのログアウトリクエストとコールバックの間で状態維持するために RP で使用される値
    • ログアウトリクエストに含まれている場合、OPはユーザーエージェントをRPにリダイレクトするときにstateを使用してこの値をRPに返す
  • ui_locales
    • Optional
    • UI用のエンドユーザーの優先言語

Ref.

Discussion