仕組み
RP起点のログアウトは、証明書利用者(ユーザー)がOpenIDプロバイダー(Auth0)にログアウトを要求するシナリオです。- ユーザーはアプリケーションでログアウト要求を開始します。
- アプリケーションはユーザーをAuth0のAuthentication APIのOIDCログアウトエンドポイントに送ります。
- Auth0は、提供されたOIDCログアウトエンドポイントのパラメーターを基に、ユーザーを適切な場所にリダイレクトします。
RP起点のログアウトを構成する
RP起点のログアウトを構成するには、アプリケーションがAuth0テナントの検出メタデータドキュメント内でend_session_endpoint
パラメーターを見つけられること、そして必要なパラメーターを使ってOIDCログアウトエンドポイントを呼び出すことを確認する必要があります。
エンドポイント検出を有効にする
2023年11月14日以降に作成されたAuth0テナントに対しては、 [RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトのセッション終了エンドポイント検出)] がデフォルトで有効に設定されています。
- Dashboard(ダッシュボード)
- Mangement API
Dashboard(ダッシュボード)の [RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトエンドセッションエンドポイント検出)] を有効にする方法:
- [Dashboard(ダッシュボード)] > [Settings(設定)] > [Advanced(詳細設定)]に移動します。
- [Login and Logout(ログインとログアウト)] セクションを見つけます。
- [RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトエンドセッションエンドポイント検出)] の切り替えを有効にします。
OIDCログアウトエンドポイントを呼び出す
Auth0のSDKライブラリーのほとんどは、OIDCに準拠しており、RP起点のログアウトをサポートするように設計されています。
id_token_hint
パラメーターの提供を推奨しています。
使用しているアプリケーションがIDトークンを安全に保管できない場合は、代わりにlogout_hint
とclient_id
パラメーターを提供することができます。
冗長情報を使ってOIDCログアウトエンドポイントを呼び出すことができます。たとえば、
id_token_hint
パラメーターとlogout_hint
パラメーターを送るか、id_token_hint
パラメーターとclient_id
パラメーターを送ります。どちらの場合も、Auth0は、ユーザーとセッションデータに矛盾がないことを確認し、食い違いがある場合はエラーを返します。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パラメーター
OIDCログアウトエンドポイントを呼び出す際には、
id_token_hint
パラメーターの使用をお勧めします。id_token_hint
パラメーターの値は、ユーザーの認証後にAuth0がユーザーに対して発行したIDトークンでなければなりません。
このIDトークンには、登録クレームの発行者(iss
)、オーディエンス(aud
)、Auth0セッションID(sid
)が検証のために含まれています。IDトークンのクレームについては、「IDトークンの構造」をお読みください。
例
- HTTP
- cURL
HTTP
logout_hintパラメーター
logout_hint
パラメーターの値は、ユーザーの現在のAuth0セッションのセッションID(sid
)でなければなりません。
このセッションID(sid
)は登録クレームとして提供され、ユーザーの認証後にAuth0がユーザーに対して発行したIDトークンに含まれています。
現在のセッションを開始する際に、Auth0発行のIDトークンに関連付けられているセッションID(
sid
)を使う必要があります。Auth0では、ランダムな値や現在のセッションデータを反映していない値のある要求は無視されます。例
post_logout_redirect_uriパラメーター
post_logout_redirect_uri
パラメーターの値は、エンコードされた有効なURLとして、以下で Allowed Logout URLs(許可されているログアウトURL) リストに登録されていなければなりません。
- アプリケーションの設定:
id_token_hint
パラメーター、またはlogout_hint
パラメーターとclient_id
パラメーターを提供した場合 - テナントの設定:
logout_hint
パラメーターのみを提供した場合。
例
HTTP
アプリケーションのAllowed Logout URLs(許可されているログアウトURL)を更新する
URLをアプリケーションの Allowed Logout URLs(許可されているログアウトURL) リストに登録するには、Auth0 DashboardまたはAuth0 Management APIを使用することができます。- Dashboard(ダッシュボード)
- Mangement API
Dashboard(ダッシュボード)で [Allowed Logout URLs(許可されているログアウトURL)] のアプリケーションリストでURLを登録する方法:
- [Dashboard(ダッシュボード)] > [Applications(アプリケーション)] > [Applications(アプリケーション)]に移動します。
- アプリケーションを選択します。
- [Application URIs(アプリケーションURL)] セクションを見つけます。
- 提供されたガイドラインに従って、 [Allowed Logout URLs(許可されているログアウトURL)] を更新します。
テナントのAllowed Logout URLs(許可されているログアウトURL)を更新する
URLをテナントの Allowed Logout URLs(許可されているログアウト) リストに登録するには、Auth0 DashboardまたはAuth0 Management APIを使用することができます。- Dashboard(ダッシュボード)
- Mangement API
Dashboard(ダッシュボード)で [Allowed Logout URLs(許可されているログアウトURL)] のテナントリストでURLを登録する方法:
- [Dashboard(ダッシュボード)] > [Settings(設定)] > [Advanced(詳細設定)]に移動します。
- [Login and Logout(ログインとログアウト)] セクションを見つけます。
- 提供されたガイドラインに従って、 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=1234
をpost_logout_redirect_uri
パラメーター(https%3A%2F%2Fexample.com%2Flogout%3FmyParam%3D1234
としてエンコード)に渡す場合は、https://example.com/logout?myParam
を Allowed 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
パラメーターの値が現在のセッションデータと一致していない

ログアウトの同意プロンプトを無効にする
ログアウトの同意プロンプトは無効にすることができます。無効にすると、Auth0は異常な動作を検出しようとしないで、ログアウト要求を自動的に受け入れます。 Dashboardを使ってログアウトの同意プロンプトを無効にするには、以下を行います。- [Dashboard]>[設定]>[Advanced(詳細設定)]に移動します。
-
[Show RP-Initiated Logout End-User Confirmation(RP起点のログアウトにエンドユーザー確認を表示する)] を無効にします。