OIDCエンドポイントを使用してユーザーをAuth0からログアウトさせる
Auth0では、エンドユーザーのログアウトにOpenID ConnectのRP-Initiated Logout 1.0を実装しています。この仕様は、OpenID Connectによる最終仕様の一部です。
仕組み
RP起点のログアウトは、証明書利用者(ユーザー)がOpenIDプロバイダー(Auth0)にログアウトを要求するシナリオです。
ユーザーはアプリケーションでログアウト要求を開始します。
アプリケーションはユーザーをAuth0のAuthentication APIのOIDCログアウトエンドポイントに送ります。
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起点のログアウトエンドセッションエンドポイント検出)]を有効にする方法:
[Login and Logout(ログインとログアウト)]セクションを見つけます。
[RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトエンドセッションエンドポイント検出)]の切り替えを有効にします。
Management APIで[RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトエンドセッションエンドポイント検出)]を有効にする方法:
update:tenant_settings
スコープを持つManagement APIのアクセストークンを取得します。次のペイロードで、Management APIのテナント設定の更新を呼び出します。
{ "oidc_logout": { "rp_logout_end_session_endpoint_discovery": true } }
Was this helpful?
/
OIDCログアウトエンドポイントを呼び出す
OIDCログアウトエンドポイントを呼び出す際に、Auth0ではid_token_hint
パラメーターの提供を推奨しています。
使用しているアプリケーションがIDトークンを安全に保管できない場合は、代わりにlogout_hint
とclient_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?
curl --request GET \
--url 'https://{yourDomain}/oidc/logout' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'id_token_hint={yourIdToken}' \
--data 'post_logout_redirect_uri={yourCallbackUrl}'
Was this helpful?
logout_hintパラメーター
logout_hint
パラメーターの値は、ユーザーの現在のAuth0セッションのセッションID(sid
)でなければなりません。
このセッションID(sid
)は登録クレームとして提供され、ユーザーの認証後にAuth0がユーザーに対して発行したIDトークンに含まれています。
例
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)リストに登録されていなければなりません。
アプリケーションの設定:
id_token_hint
パラメーター、またはlogout_hint
パラメーターとclient_id
パラメーターを提供した場合テナントの設定:
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を登録する方法:
[Dashboard] > [Applications(アプリケーション)] > [Applications(アプリケーション)]に移動します。
アプリケーションを選択します。
[Application URIs(アプリケーションURL)]セクションを見つけます。
提供されたガイドラインに従って、[Allowed Logout URLs(許可されているログアウトURL)]を更新します。
Management APIから[Allowed Logout URLs(許可されているログアウトURL)]のアプリケーションリストでURLを登録する方法:
update:clients
スコープを含むManagement APIのアクセストークンを取得します。Management APIのクライアントの更新 エンドポイントを呼び出し、要求本文の
allowed_logout_urls
フィールド値にURLを含むようにしてください。PATCH https://{yourDomain}/api/v2/clients/{clientId} Authorization: Bearer {yourMgmtApiAccessToken} Content-Type: application/json { "allowed_logout_urls": [ "https://www.example.com", "https://www.example.com/logout" ] }
Was this helpful?
/
テナントのAllowed Logout URLs(許可されているログアウトURL)を更新する
URLをテナントのAllowed Logout URLs(許可されているログアウト)リストに登録するには、Auth0 DashboardまたはAuth0 Management APIを使用することができます。
Dashboardで[Allowed Logout URLs(許可されているログアウトURL)]のテナントリストでURLを登録する方法:
[Login and Logout(ログインとログアウト)]セクションを見つけます。
提供されたガイドラインに従って、Allowed Logout URLs(許可されているログアウトURL)を更新します。
Management APIから[Allowed Logout URLs(許可されているログアウトURL)]のテナントリストでURLを登録する方法:
update:tenant_settings
スコープを含むManagement APIのアクセストークンを取得します。Management APIのテナント設定の更新エンドポイントを呼び出し、要求本文の
allowed_logout_urls
フィールド値にURLを含むようにしてください。PATCH https://{yourDomain}/api/v2/tenants/settings Authorization: Bearer {yourMgmtApiAccessToken} Content-Type: application/json { "allowed_logout_urls": [ "https://www.example.com", "https://www.example.com/logout" ] }
Was this helpful?
/
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はログアウトフローを続行します。
ログアウトの同意プロンプトを無効にする
ログアウトの同意プロンプトは無効にすることができます。無効にすると、Auth0は異常な動作を検出しようとしないで、ログアウト要求を自動的に受け入れます。
Dashboardを使ってログアウトの同意プロンプトを無効にするには、以下を行います。
[Show RP-Initiated Logout End-User Confirmation(RP起点のログアウトにエンドユーザー確認を表示する)]を無効にします。