始める前に
バックチャネルログアウトを使用するには、アプリケーションが次の要件を満たしている必要があります。
- OIDC バックチャネルログアウト URI エンドポイントは、Auth0 テナントからアクセスできるようインターネット上に公開されている必要があります。
- 本番運用向けのアプリケーションでは TLS を使用する必要があります。詳しくは、TLS (SSL) Versions and Ciphers を参照してください。
- アプリケーションは、提供されるセッション識別子 (
sid) を保存し、作成したユーザーセッションに関連付けられる必要があります。本番運用のアプリケーションでは、永続的なセッションストレージを使用することを推奨します。 - アプリケーションは、ログアウト処理中に
sidを使用して、クライアントサイドの Cookie を使わずに既存のセッションを取得できる必要があります。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 に移動します。
- 登録するアプリケーションを選択します。
- 設定 タブを選択します。
-
OpenID Connect Back-Channel Logout > Back-Channel Logout URI で、
logout_tokensを受け取るアプリケーションのログアウト URI を追加します。 -
完了したら、変更を保存 を選択します。

アプリケーションの登録を解除する
アプリケーションの登録を解除すると、サービスは新しいログインの追跡とログアウトイベントの送信を停止します。登録解除後、サービスは保留中のログアウトイベントを破棄します。アプリケーションの登録を解除するには、バックチャネルログアウト URL を削除します。- Auth0 Dashboard > Applications に移動します。
- 登録を解除するアプリケーションを選択します。
- 設定 タブを選択します。
- OpenID Connect Back-Channel Logout > Back-Channel Logout URI で
- バックチャネル URL を削除します。
-
完了したら、変更を保存 を選択します。

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