OIDCエンドポイントを使用してユーザーをAuth0からログアウトさせる

Auth0では、エンドユーザーのログアウトにOpenID ConnectのRP-Initiated Logout 1.0を実装しています。この仕様は、OpenID Connectによる最終仕様の一部です。

仕組み

RP起点のログアウトは、証明書利用者(ユーザー)がOpenIDプロバイダー(Auth0)にログアウトを要求するシナリオです。

  1. ユーザーはアプリケーションでログアウト要求を開始します。

  2. アプリケーションはユーザーをAuth0のAuthentication APIのOIDCログアウトエンドポイントに送ります。

  3. Auth0は、提供されたOIDCログアウトエンドポイントのパラメーターを基に、ユーザーを適切な場所にリダイレクトします。

RP起点のログアウトを構成する

RP起点のログアウトを構成するには、アプリケーションがAuth0テナントの検出メタデータドキュメント内でend_session_endpointパラメーターを見つけられること、そして必要なパラメーターを使ってOIDCログアウトエンドポイントを呼び出すことを確認する必要があります。

エンドポイント検出を有効にする

RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトのセッション終了エンドポイント検出)は、Auth0 DashboardまたはAuth0 Management APIを使用して有効にすることができます。

Dashboardの[RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトエンドセッションエンドポイント検出)]を有効にする方法:

  1. [Dashboard] > [Settings(設定)] > [Advanced(詳細設定)]に移動します。

  2. [Login and Logout(ログインとログアウト)]セクションを見つけます。

  3. [RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトエンドセッションエンドポイント検出)]の切り替えを有効にします。

OIDCログアウトエンドポイントを呼び出す

OIDCログアウトエンドポイントを呼び出す際に、Auth0ではid_token_hintパラメーターの提供を推奨しています。

使用しているアプリケーションがIDトークンを安全に保管できない場合は、代わりにlogout_hintclient_idパラメーターを提供することができます。

OIDCログアウトエンドポイントのパラメーター

Authentication APIのOIDCログアウトエンドポイントは、以下のパラメーターに対応しています。

パラメーター 必要? 説明
id_token_hint 推奨 以前ユーザーに発行されたIDトークン。ログアウトさせるユーザーを示します。
logout_hint 任意 どのユーザーをログアウトさせるかを示すセッションID(sid)値。
post_logout_redirect_uri 任意 ユーザーをログアウト後にリダイレクトする場所を示すリダイレクトURL値。
client_id 任意 アプリケーションのクライアントID。
federated 任意 ユーザーをIDプロバイダーからログアウトするようAuth0に指示。
state 任意 アプリケーションが最初のログアウト要求に追加し、Auth0がpost_logout_redirect_uriにリダイレクトするときに含める不透明な値。
ui_locales 任意 要求の言語リストを制限するために使用される、スペース区切りのロケールリスト。リストの最初のロケールはテナントで有効になっているロケールと一致する必要があります。

id_token_hintパラメーター

id_token_hintパラメーターの値は、ユーザーの認証後にAuth0がユーザーに対して発行したIDトークンでなければなりません。

このIDトークンには、登録クレームの発行者(iss)、オーディエンス(aud)、Auth0セッションID(sid)が検証のために含まれています。IDトークンのクレームについては、「IDトークンの構造」をお読みください。

https://{yourDomain}/oidc/logout?id_token_hint={yourIdToken}&post_logout_redirect_uri={yourCallbackUrl}

Was this helpful?

/

logout_hintパラメーター

logout_hintパラメーターの値は、ユーザーの現在のAuth0セッションのセッションID(sid)でなければなりません。

このセッションID(sid)は登録クレームとして提供され、ユーザーの認証後にAuth0がユーザーに対して発行したIDトークンに含まれています。

codeblockOld.header.login.configureSnippet
https://{yourDomain}/oidc/logout?{clientId}={yourClientId}&logout_hint={sessionId}

Was this helpful?

/

post_logout_redirect_uriパラメーター

post_logout_redirect_uriパラメーターの値は、エンコードされた有効なURLとして、以下でAllowed Logout URLs(許可されているログアウトURL)リストに登録されていなければなりません。

  1. アプリケーションの設定id_token_hintパラメーター、またはlogout_hintパラメーターとclient_idパラメーターを提供した場合

  2. テナントの設定logout_hintパラメーターのみを提供した場合。

https://{yourDomain}/oidc/logout?post_logout_redirect_uri=http%3A%2F%2Fwww.example.com

Was this helpful?

/

アプリケーションのAllowed Logout URLs(許可されているログアウトURL)を更新する

URLをアプリケーションのAllowed Logout URLs(許可されているログアウトURL)リストに登録するには、Auth0 DashboardまたはAuth0 Management APIを使用することができます。

Dashboardで[Allowed Logout URLs(許可されているログアウトURL)]のアプリケーションリストでURLを登録する方法:

  1. [Dashboard] > [Applications(アプリケーション)] > [Applications(アプリケーション)]に移動します。

  2. アプリケーションを選択します。

  3. [Application URIs(アプリケーションURL)]セクションを見つけます。

  4. 提供されたガイドラインに従って、[Allowed Logout URLs(許可されているログアウトURL)]を更新します。

テナントのAllowed Logout URLs(許可されているログアウトURL)を更新する

URLをテナントのAllowed Logout URLs(許可されているログアウト)リストに登録するには、Auth0 DashboardまたはAuth0 Management APIを使用することができます。

Dashboardで[Allowed Logout URLs(許可されているログアウトURL)]のテナントリストでURLを登録する方法:

  1. [Dashboard] > [Settings(設定)] > [Advanced(詳細設定)]に移動します。

  2. [Login and Logout(ログインとログアウト)]セクションを見つけます。

  3. 提供されたガイドラインに従って、Allowed Logout URLs(許可されているログアウトURL)を更新します。

Allowed Logout URLs(許可されているログアウトURL)のガイドライン

Allowed Logout URLs(許可されているログアウト)の更新では、検証エラーを避けるために以下のガイドラインに従ってください。

  • 複数のURL値はカンマ(,)で区切ります。

  • URLのスキーム部分を含めます(例:https://)。

サブドメインにはアスタリスク(*)をワイルドカードとして使用(例:https://*.example.com)できますが、運用環境ではワイルドカードの使用はお勧めしません。詳細については、「サブドメインURLのプレースホルダー」をお読みください。

post_logout_redirect_uriにクエリ文字列パラメーターを追加する

OIDCログアウトエンドポイントは、post_logout_redirect_uriパラメーターに提供されたURLのクエリ文字列パラメーターを解析します。

これらのクエリ文字列パラメーターは、Allowed Logout URLs(許可されているログアウトURL)に含める必要があります。含まれていない場合には、ログアウト要求が拒否される可能性があります。

たとえば、https://example.com/logout?myParam=1234post_logout_redirect_uriパラメーター(https%3A%2F%2Fexample.com%2Flogout%3FmyParam%3D1234としてエンコード)に渡す場合は、https://example.com/logout?myParamAllowed Logout URLs(許可されているログアウトURL)に含める必要があります。

ui_localesパラメーター

ui_localesパラメーターの値は、対応ロケールがスペースで区切られてリストされていなければなりません。

リストにある最初の値は、テナントのデフォルト言語設定と一致しなければなりません。

federatedパラメーター

federatedパラメーターは値を必要としません。

OIDCログアウトエンドポイントの呼び出しにfederatedパラメーターを含めた場合、Auth0はそれらのIDプロバイダーからユーザーをログアウトさせようとします。

ログアウト同意プロンプト

OIDC仕様では、エンドユーザーがログアウト要求を行ったということを、OpenIDプロバイダーが確認できない場合には、ログアウトフローがユーザーの同意を求めるために中断されると定義されています。

Auth0では、以下のいずれかの条件を検出した場合に、ログアウト同意プロンプトを表示することでこの動作を強制します。

  • id_token_hintパラメーターとlogout_hintパラメーターがどちらも提供されていない

  • IDトークンのsidクレームが要求にあるブラウザーセッションに対応していない

  • logout_hintパラメーターの値が現在のセッションデータと一致していない

null

ユーザーがログアウト要求を確認すると、Auth0はログアウトフローを続行します。

ログアウトの同意プロンプトを無効にする

ログアウトの同意プロンプトは無効にすることができます。無効にすると、Auth0は異常な動作を検出しようとしないで、ログアウト要求を自動的に受け入れます。

Dashboardを使ってログアウトの同意プロンプトを無効にするには、以下を行います。

  1. [Dashboard]>[設定]>[Advanced(詳細設定)]に移動します。

  2. [Show RP-Initiated Logout End-User Confirmation(RP起点のログアウトにエンドユーザー確認を表示する)]を無効にします。

    null

もっと詳しく