メインコンテンツへスキップ
Auth0では、エンドユーザーのログアウトに 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ログアウトエンドポイントを呼び出すことを確認する必要があります。

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

2023年11月14日以降に作成されたAuth0テナントに対しては、 [RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトのセッション終了エンドポイント検出)] がデフォルトで有効に設定されています。
RP-Initiated Logout End Session Endpoint Discovery(RP起点のログアウトのセッション終了エンドポイント検出) は、またはAuth0 を使用して有効にすることができます。
  • Dashboard(ダッシュボード)
  • Mangement 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ログアウトエンドポイントを呼び出す

Auth0のSDKライブラリーのほとんどは、OIDCに準拠しており、RP起点のログアウトをサポートするように設計されています。
OIDCログアウトエンドポイントを呼び出す際に、Auth0ではid_token_hintパラメーターの提供を推奨しています。 使用しているアプリケーションがIDトークンを安全に保管できない場合は、代わりにlogout_hintclient_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
https://{yourDomain}/oidc/logout?id_token_hint={yourIdToken}&post_logout_redirect_uri={yourCallbackUrl}

logout_hintパラメーター

logout_hintパラメーターの値は、ユーザーの現在のAuth0セッションのセッションID(sid)でなければなりません。 このセッションID(sid)は登録クレームとして提供され、ユーザーの認証後にAuth0がユーザーに対して発行したIDトークンに含まれています。
現在のセッションを開始する際に、Auth0発行のIDトークンに関連付けられているセッションID(sid)を使う必要があります。Auth0では、ランダムな値や現在のセッションデータを反映していない値のある要求は無視されます。
https://{yourDomain}/oidc/logout?{clientId}={yourClientId}&logout_hint={sessionId}

post_logout_redirect_uriパラメーター

post_logout_redirect_uriパラメーターの値は、エンコードされた有効なURLとして、以下で Allowed Logout URLs(許可されているログアウトURL) リストに登録されていなければなりません。
  1. アプリケーションの設定id_token_hintパラメーター、またはlogout_hintパラメーターとclient_idパラメーターを提供した場合
  2. テナントの設定logout_hintパラメーターのみを提供した場合。
HTTP
https://{yourDomain}/oidc/logout?post_logout_redirect_uri=http%3A%2F%2Fwww.example.com
アプリケーションのAllowed Logout URLs(許可されているログアウトURL)を更新する
URLをアプリケーションの Allowed Logout URLs(許可されているログアウトURL) リストに登録するには、Auth0 DashboardまたはAuth0 Management APIを使用することができます。
  • Dashboard(ダッシュボード)
  • Mangement 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(ダッシュボード)
  • Mangement 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

もっと詳しく

I