Skip to main content

始める前に

バックチャネルログアウトを使用するには、アプリケーションが次の要件を満たしている必要があります。
  • OIDC バックチャネルログアウト URI エンドポイントは、Auth0 テナントからアクセスできるようインターネット上に公開されている必要があります。
  • 本番運用向けのアプリケーションでは TLS を使用する必要があります。詳しくは、TLS (SSL) Versions and Ciphers を参照してください。
  • アプリケーションは、提供されるセッション識別子 (sid) を保存し、作成したユーザーセッションに関連付けられる必要があります。本番運用のアプリケーションでは、永続的なセッションストレージを使用することを推奨します。
  • アプリケーションは、ログアウト処理中に sid を使用して、クライアントサイドの Cookie を使わずに既存のセッションを取得できる必要があります。Cookie はブラウザー内に保存されるため、ログアウトのコールバックエンドポイントからはアクセスできません。

提供状況

OIDC バックチャネルログアウトは、Enterprise planをご利用のすべてのお客様に提供されています。ご利用のアプリケーションが要件を満たしているかどうかを確認するには、OIDC標準のメタデータエンドポイント /.well-known/* をご確認ください。

バックチャネルログアウトの制限

バックチャネルログアウト URL は公開されているエンドポイントに対して呼び出されるため、以下の制限に従う必要があります。
  1. HTTPS を使用する必要があります。暗号化されていない HTTP やその他のプロトコルは使用できません。
  2. Auth0 のサブドメインは使用できません。Auth0 のサブドメインには、次のようなものがあります。
    • auth0.com
    • auth0app.com
    • webtask.io
    • webtask.run
  3. ドメイン名のない IP アドレスの使用は推奨されません。バックチャネルログアウトで使用する IP アドレスは、パブリック IP である必要があります。内部、予約済み、またはループバックの範囲にある IP アドレスは使用できません。

Auth0 を設定する

または で、ログアウトトークンを受け取るアプリケーションを登録します。

アプリケーションを登録する

  1. Auth0 Dashboard > Applications に移動します。
  2. 登録するアプリケーションを選択します。
  3. 設定 タブを選択します。
  4. OpenID Connect Back-Channel Logout > Back-Channel Logout URI で、logout_tokens を受け取るアプリケーションのログアウト URI を追加します。
  5. 完了したら、変更を保存 を選択します。
    Auth0 Dashboard > Applications > Settings

アプリケーションの登録を解除する

アプリケーションの登録を解除すると、サービスは新しいログインの追跡とログアウトイベントの送信を停止します。登録解除後、サービスは保留中のログアウトイベントを破棄します。アプリケーションの登録を解除するには、バックチャネルログアウト URL を削除します。
  1. Auth0 Dashboard > Applications に移動します。
  2. 登録を解除するアプリケーションを選択します。
  3. 設定 タブを選択します。
  4. OpenID Connect Back-Channel Logout > Back-Channel Logout URI
  5. バックチャネル URL を削除します。
  6. 完了したら、変更を保存 を選択します。
    Auth0 Dashboard > Applications > Settings
監査のため、サービスはバックチャネルログアウト URL の登録・登録解除を、常に Auth0 テナントログに API Operation Event として記録します。詳しくは、ログ を参照してください。

アプリケーションを設定する

Auth0 Dashboard または Management API でバックチャネルログアウトを設定したら、使用している技術やフレームワークに応じて、このサービスを利用するようアプリケーションを設定します。
  1. アプリケーションの種類に応じて、エンドユーザーの認証を実装します。
    1. エンドユーザーがアプリケーションにログインでき、セッションが作成される必要があります。
    2. Auth0 から ID トークンが発行され、後続の処理のためにアプリケーションのバックエンドで参照できる必要があります。
  2. ログインプロセスを拡張し、ID トークンの検証後に sid と、必要に応じて sub クレームを保存します。
    1. これらのクレームは、現在のアプリケーションセッションに関連付けて保存する必要があります。
    2. セッション管理機能は、sid の値を使って特定のセッションを取得できる必要があります。
  3. バックチャネルログアウトエンドポイントを設定します。
    1. エンドポイントは HTTP POST リクエストのみを処理する必要があります。
    2. logout_token パラメーターを取り出し、仕様に従って通常の JWT として検証します。
    3. トークンに、JSON オブジェクト値を持つ events クレームと、http://schemas.openid.net/event/backchannel-logout という名前のメンバーが含まれていることを確認します。
    4. トークンに sid クレームおよび/または sub クレームが含まれていることを確認します。
    5. トークンに nonce クレームが含まれていないことを確認します。これは、ログアウトトークンを ID トークンと区別して悪用を防ぐために必要です。
    6. トークンを検証したら、受信した sid および/または sub の値に対応するセッションを取得し、終了します。アプリケーションセッションを終了する具体的な方法は、実装の詳細によって異なります。たとえば、このイベントをフロントエンドに通知する必要がある場合があります。

OIDC バックチャネルログアウト リクエストの例

コード化されたトークンのペイロード:
cURL
トークンの有効期限は2分 (120秒) です。
デコード後のトークンペイロード:
JSON

想定されるレスポンス

  • HTTP 200:  ユーザーが特定のアプリケーションからログアウトしたことを示します。
  • HTTP 400: 不正なリクエストを示します。リクエストを解釈できなかったか、トークンがバリデーションに失敗しました。Auth0 は問題をテナントログに記録しますが、この特定のセッションに対して追加のリクエストは行いません。

トラブルシューティング

アプリケーションがログアウトイベントを受信しなかった

ログアウトイベントの発生後に、アプリケーションがログアウトリクエストを受信しなかった場合。
  1. アプリケーションに、Auth0 Dashboard でバックチャネルログアウト URL が登録されていることを確認します。
  2. バックチャネルログアウト URL に Auth0 テナントからアクセスできることを確認します。
  3. 有効なセッションが確立されていることを確認します。エンドユーザーは、Auth0 経由で対象のアプリケーションにログインしている必要があります。
    アプリケーションがログアウトイベントを受信するのは、エンドユーザーが Auth0 を使ってその特定のアプリケーションにログインした場合のみです。エンドユーザーがほかのアプリケーションにログインしていても、ログアウトイベントはトリガーされません。
  4. ログアウトメッセージの配信失敗に関するメッセージがないか、Auth0 テナントログを確認します。
  5. ログアウトが標準のログアウトエンドポイント経由でトリガーされていることを確認します。ほかのイベントではログアウトイベントはトリガーされません。
  6. 可能であれば、Web サーバーやアプリケーションのファイアウォールログで、ブロックされたリクエストがないか確認します。

OIDC バックチャネルログアウトのテナントログが見つかりません

この機能は、2023 年 10 月 3 日からすべてのテナントに順次リリースされます。なお、テナントログのイベントコードには、oidc_backchannel_logout_succeededsslo または oidc_backchannel_logout_failedfslo が引き続き表示される場合があります。

クライアントアプリで受信したログアウトトークンを検証できない

トランザクションが引き続き 400 エラーで失敗する場合:
  1. トークンが標準的な base64 エンコードの JWT であることを確認します。長いパラメーターは、一部の Web サーバーで途中で切り詰められることがあります。詳しくは、署名アルゴリズム を参照してください。
  2. 可能であればトークンを取得し、それが JWT であることを確認します。JWT.IO などの信頼できるソースを使用してください。
  3. 検証関数が、JSON Web Key Sets (JWKS) を通じてテナントの署名鍵を動的に取得するようになっていることを確認します。
    静的なキーをハードコードすることは推奨していません。設定上どうしても静的なキーをハードコードする必要がある場合は、その設定に Auth0 テナントの最新の公開鍵が含まれていることを確認してください。

応答タイムアウトエラー

Auth0 は、アプリケーションの OIDC バックチャネルログアウト URL からの応答を 5 秒間待機します。5 秒を過ぎると、レスポンスの説明が空の “Failed OIDC バックチャネルログアウト request” がテナントログに記録されます。

詳しくはこちら