開始前に
バックチャネルログアウトを使用するには、アプリケーションが次の要件を満たしている必要があります。
- OIDC バックチャネルログアウト URI エンドポイントは、Auth0 テナントからアクセスできるよう、インターネット経由で公開されている必要があります。
- 本番運用向けのアプリケーションでは、TLS を使用する必要があります。詳細については、TLS (SSL) Versions and Ciphers を参照してください。
- アプリケーションは、提供されたセッション識別子 (
sid) を保存し、作成したユーザーセッションに関連付けられる必要があります。本番環境のアプリケーションでは、永続的なセッションストレージを使用することを推奨します。 - アプリケーションは、ログアウト処理中にクライアント側の Cookie を使用せず、
sidを使って既存のセッションを取得できる必要があります。Cookie はブラウザー内に存在するため、ログアウトコールバックエンドポイントからはアクセスできません。
提供状況
/.well-known/* メタデータエンドポイントを確認してください。
バックチャネルログアウトの制限
- HTTPS プロトコルを使用する必要があります。暗号化されていない HTTP やその他のプロトコルは使用できません。
-
Auth0 のサブドメインは使用できません。Auth0 のサブドメインには、次のようなものがあります。
- auth0.com
- auth0app.com
- webtask.io
- webtask.run
- ドメイン名を持たない IP アドレスの使用は推奨されません。バックチャネルログアウトで IP アドレスを使用する場合は、パブリック IP である必要があります。内部、予約済み、またはループバックの範囲に属する IP アドレスは使用できません。
Auth0 を設定する
- Auth0 Dashboard
- Management API
アプリケーションを登録する
- Auth0 Dashboard > Applications に移動します。
- 登録するアプリケーションを選択します。
- Settings タブを選択します。
-
OpenID Connect Back-Channel Logout > Back-Channel Logout URI で、
logout_tokensを受信するアプリケーションのログアウト URI を追加します。 -
完了したら、Save Changes を選択します。

アプリケーションの登録を解除する
アプリケーションの登録を解除すると、サービスは新しいログインの追跡とログアウトイベントの送信を停止します。登録解除後、サービスは保留中のログアウトイベントを破棄します。アプリケーションの登録を解除するには、back-channel logout URL を削除します。- Auth0 Dashboard > Applications に移動します。
- 登録を解除するアプリケーションを選択します。
- Settings タブを選択します。
- OpenID Connect Back-Channel Logout > Back-Channel Logout URI の項目で、
- back-channel URL を削除します。
-
完了したら、Save Changes を選択します。

API Operation Event として記録します。詳しくは、Logs を参照してください。アプリケーションを設定する
-
アプリケーションの種類に応じて、エンドユーザー認証を実装します。
- エンドユーザーがアプリケーションにログインでき、セッションが作成される必要があります。
- Auth0 から IDトークン が発行され、その後の処理のためにアプリケーションのバックエンドからアクセスできる必要があります。
-
IDトークン の検証後に、
sidと、必要に応じてsubクレームを保存するよう、ログインプロセスを拡張します。- これらのクレームは、現在のアプリケーションセッションに関連付けて保存する必要があります。
- セッション管理機能は、
sidの値を使って特定のセッションを取得できる必要があります。
-
Back-Channel Logout エンドポイントを設定します。
- エンドポイントは
HTTP POSTリクエストのみを処理する必要があります。 logout_tokenパラメーターを抽出し、仕様に従って通常の JWT として検証します。- トークンに、JSON オブジェクト値を持つ
eventsクレームと、http://schemas.openid.net/event/backchannel-logoutという名前のメンバーが含まれていることを確認します。 - トークンに
sidおよび/またはsubクレームが含まれていることを確認します。 - トークンに
nonceクレームが含まれていないことを確認します。これは、Logout Token を IDトークン と区別して悪用を防ぐために必要です。 - トークンが検証されたら、受信した
sidおよび/またはsubの値に対応するセッションを取得し、終了します。アプリケーションセッションを終了する具体的な手順は、実装の詳細によって異なります。たとえば、このイベントをフロントエンドに通知する必要がある場合があります。
- エンドポイントは
OIDC バックチャネルログアウトリクエストの例
cURL
トークンの有効期限は2分 (120秒) です。
JSON
想定されるレスポンス
- HTTP 200: ユーザーが特定のアプリケーションからログアウトしたことを示します。
- HTTP 400: 不正なリクエストを示します。リクエストを解釈できないか、トークンの検証に失敗しています。Auth0 はこの問題をテナントのログに記録しますが、この特定のセッションに対してそれ以上のリクエストは行いません。
問題のトラブルシューティング
アプリケーションがログアウトイベントを受信しない
- アプリケーションの Back-Channel Logout URL が Auth0 Dashboard に登録されていることを確認します。
- Back-Channel Logout URL に Auth0 テナントから到達できることを確認します。
-
有効なセッションが確立されていることを確認します。エンドユーザーは、Auth0 経由でその特定のアプリケーションにログインしている必要があります。
アプリケーションがログアウトイベントを受信するのは、エンドユーザーが Auth0 を使用してその特定のアプリケーションにログインした場合のみです。エンドユーザーが他のアプリケーションにログインしている場合、ログアウトイベントはトリガーされません。
- ログアウトメッセージの配信に失敗したことを示すメッセージがないか、Auth0 テナントのログを確認します。
- 標準のログアウトエンドポイント経由でログアウトがトリガーされていることを確認します。他のイベントではログアウトイベントはトリガーされません。
- 可能であれば、Web サーバーやアプリケーションファイアウォールのログで、リクエストがブロックされていないか確認します。
OIDC Back-Channel Logout のテナントログが見つからない
oidc_backchannel_logout_succeeded には引き続き sslo、oidc_backchannel_logout_failed には fslo が表示される場合があります。
クライアントアプリで受信した Logout Token を検証できない
- トークンが標準的な base64 エンコードの JWT かどうかを確認します。一部の Web サーバーでは、長いパラメーターが途中で切り詰められることがあります。詳細は、Signing Algorithms を参照してください。
- 可能であれば、トークンを取得して、それが JWT であることを確認します。JWT.IO などの信頼できるソースを使用してください。
-
検証関数が、JSON Web Key Sets (JWKS) を通じてテナントの署名鍵を動的に取得することを確認します。
静的キーのハードコードは推奨されません。設定上、静的キーをハードコードする必要がある場合は、その設定に Auth0 テナントの最新の公開鍵が含まれていることを確認してください。