> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-feat-init-gt-translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Auth0 サービスで OIDC バックチャネルログアウトを設定する方法を説明します。

# OIDC バックチャネルログアウトを設定する

<Card title="始める前に">
  バックチャネルログアウトを使用するには、アプリケーションが次の要件を満たしている必要があります。

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

<h2 id="availability">
  提供状況
</h2>

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

```json lines theme={null}
GET https://acme.eu.auth0.com/.well-known/openid-configuration

HTTP 200
{ ..., "backchannel_logout_supported": true, 
  "backchannel_logout_session_supported": true }
```

<h2 id="back-channel-logout-restrictions">
  バックチャネルログアウトの制限
</h2>

バックチャネルログアウト URL は公開されているエンドポイントに対して呼び出されるため、以下の制限に従う必要があります。

1. HTTPS を使用する必要があります。暗号化されていない HTTP やその他のプロトコルは使用できません。
2. Auth0 のサブドメインは使用できません。Auth0 のサブドメインには、次のようなものがあります。

   * auth0.com
   * auth0app.com
   * webtask.io
   * webtask.run
3. ドメイン名のない IP アドレスの使用は推奨されません。バックチャネルログアウトで使用する IP アドレスは、パブリック IP である必要があります。内部、予約済み、またはループバックの範囲にある IP アドレスは使用できません。

<h2 id="configure-auth0">
  Auth0 を設定する
</h2>

<Tooltip tip="Auth0 Dashboard: サービスを設定するための Auth0 の主要プロダクト。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> または <Tooltip tip="Auth0 Dashboard: サービスを設定するための Auth0 の主要プロダクト。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Management+API">Management API</Tooltip> で、ログアウトトークンを受け取るアプリケーションを登録します。

<Tabs>
  <Tab title="Auth0 Dashboard">
    <h4 id="subscribe-applications">
      アプリケーションを登録する
    </h4>

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

           <Frame>
             <img src="https://mintcdn.com/docs-staging-feat-init-gt-translations/jvh5IDJQk1k_np_N/docs/images/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/0564bfeda05bc7df90af9e8ee852047f/Screenshot_2024-11-05_at_13.31.54.png?fit=max&auto=format&n=jvh5IDJQk1k_np_N&q=85&s=f0f82c21bf585ddb6520ef642e5c9b3d" alt="Auth0 Dashboard > Applications > Settings" data-og-width="1404" width="1404" data-og-height="247" height="247" data-path="docs/images/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/0564bfeda05bc7df90af9e8ee852047f/Screenshot_2024-11-05_at_13.31.54.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-feat-init-gt-translations/jvh5IDJQk1k_np_N/docs/images/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/0564bfeda05bc7df90af9e8ee852047f/Screenshot_2024-11-05_at_13.31.54.png?w=280&fit=max&auto=format&n=jvh5IDJQk1k_np_N&q=85&s=4ccc3bfcb28fc3917d52a69ad84549a2 280w, https://mintcdn.com/docs-staging-feat-init-gt-translations/jvh5IDJQk1k_np_N/docs/images/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/0564bfeda05bc7df90af9e8ee852047f/Screenshot_2024-11-05_at_13.31.54.png?w=560&fit=max&auto=format&n=jvh5IDJQk1k_np_N&q=85&s=8a2af0a71ad4dae2456f3cb49037673b 560w, https://mintcdn.com/docs-staging-feat-init-gt-translations/jvh5IDJQk1k_np_N/docs/images/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/0564bfeda05bc7df90af9e8ee852047f/Screenshot_2024-11-05_at_13.31.54.png?w=840&fit=max&auto=format&n=jvh5IDJQk1k_np_N&q=85&s=7d3fb56335f83d077a5b942374844d59 840w, https://mintcdn.com/docs-staging-feat-init-gt-translations/jvh5IDJQk1k_np_N/docs/images/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/0564bfeda05bc7df90af9e8ee852047f/Screenshot_2024-11-05_at_13.31.54.png?w=1100&fit=max&auto=format&n=jvh5IDJQk1k_np_N&q=85&s=17d226c8588acdaba830ed17efb81d24 1100w, https://mintcdn.com/docs-staging-feat-init-gt-translations/jvh5IDJQk1k_np_N/docs/images/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/0564bfeda05bc7df90af9e8ee852047f/Screenshot_2024-11-05_at_13.31.54.png?w=1650&fit=max&auto=format&n=jvh5IDJQk1k_np_N&q=85&s=bbf9665549417752bd90d09932ee7edc 1650w, https://mintcdn.com/docs-staging-feat-init-gt-translations/jvh5IDJQk1k_np_N/docs/images/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/0564bfeda05bc7df90af9e8ee852047f/Screenshot_2024-11-05_at_13.31.54.png?w=2500&fit=max&auto=format&n=jvh5IDJQk1k_np_N&q=85&s=b1dd49086bdcd9f23aba5e5dbd971a15 2500w" />
           </Frame>

    <h4 id="unsubscribe-applications">
      アプリケーションの登録を解除する
    </h4>

    アプリケーションの登録を解除すると、サービスは新しいログインの追跡とログアウトイベントの送信を停止します。登録解除後、サービスは保留中のログアウトイベントを破棄します。

    アプリケーションの登録を解除するには、バックチャネルログアウト URL を削除します。

    1. [Auth0 Dashboard > Applications](http://manage.auth0.com/#/applications) に移動します。
    2. 登録を解除するアプリケーションを選択します。
    3. **設定** タブを選択します。
    4. **OpenID Connect Back-Channel Logout > Back-Channel Logout URI** で
    5. バックチャネル URL を削除します。
    6. 完了したら、**変更を保存** を選択します。

           <Frame>
             <img src="https://mintcdn.com/docs-staging-feat-init-gt-translations/lXCEOVvU32b-YQad/docs/images/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/9b69eb926e44c35b426daa76a851a5db/Screenshot_2024-11-05_at_13.31.54.png?fit=max&auto=format&n=lXCEOVvU32b-YQad&q=85&s=cf34cc0f25092ff84c74999e18a45b09" alt="Auth0 Dashboard > Applications > Settings" data-og-width="1404" width="1404" data-og-height="247" height="247" data-path="docs/images/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/9b69eb926e44c35b426daa76a851a5db/Screenshot_2024-11-05_at_13.31.54.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-feat-init-gt-translations/lXCEOVvU32b-YQad/docs/images/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/9b69eb926e44c35b426daa76a851a5db/Screenshot_2024-11-05_at_13.31.54.png?w=280&fit=max&auto=format&n=lXCEOVvU32b-YQad&q=85&s=a6fc8c3a04c69a20ed2c906b3a70e5d2 280w, https://mintcdn.com/docs-staging-feat-init-gt-translations/lXCEOVvU32b-YQad/docs/images/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/9b69eb926e44c35b426daa76a851a5db/Screenshot_2024-11-05_at_13.31.54.png?w=560&fit=max&auto=format&n=lXCEOVvU32b-YQad&q=85&s=d4144d1d9309305e7ab8d6818f555b08 560w, https://mintcdn.com/docs-staging-feat-init-gt-translations/lXCEOVvU32b-YQad/docs/images/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/9b69eb926e44c35b426daa76a851a5db/Screenshot_2024-11-05_at_13.31.54.png?w=840&fit=max&auto=format&n=lXCEOVvU32b-YQad&q=85&s=58d53723515315437573703b9739da94 840w, https://mintcdn.com/docs-staging-feat-init-gt-translations/lXCEOVvU32b-YQad/docs/images/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/9b69eb926e44c35b426daa76a851a5db/Screenshot_2024-11-05_at_13.31.54.png?w=1100&fit=max&auto=format&n=lXCEOVvU32b-YQad&q=85&s=fb8530ca5736334c94119b4d730fb96d 1100w, https://mintcdn.com/docs-staging-feat-init-gt-translations/lXCEOVvU32b-YQad/docs/images/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/9b69eb926e44c35b426daa76a851a5db/Screenshot_2024-11-05_at_13.31.54.png?w=1650&fit=max&auto=format&n=lXCEOVvU32b-YQad&q=85&s=0a99518c5c74a38c96ee1bcd9eef00c6 1650w, https://mintcdn.com/docs-staging-feat-init-gt-translations/lXCEOVvU32b-YQad/docs/images/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/9b69eb926e44c35b426daa76a851a5db/Screenshot_2024-11-05_at_13.31.54.png?w=2500&fit=max&auto=format&n=lXCEOVvU32b-YQad&q=85&s=8da1638d22192da3194fdbd538aadfd6 2500w" />
           </Frame>

    監査のため、サービスはバックチャネルログアウト URL の登録・登録解除を、常に Auth0 テナントログに `API Operation Event` として記録します。詳しくは、[ログ](/docs/ja-jp/deploy-monitor/logs) を参照してください。
  </Tab>

  <Tab title="Management API">
    <h4 id="subscribe-application">
      アプリケーションを登録する
    </h4>

    Management API でクライアントに `PATCH` リクエストを送信する際に、`oidc_logout` プロパティを追加します。

    ```bash cURL lines theme={null}
    PATCH /api/v2/clients/{id}
    "oidc_logout": {
      "backchannel_logout_urls": ["http://acme.eu.auth0.com/events"]
    }
    ```

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      このリクエストには、他のアプリケーションパラメーターを含めることもできます。
    </Callout>

    <h4 id="unsubscribe-application">
      アプリケーションの登録を解除する
    </h4>

    `oidc_logout` パラメーターを削除します。

    ```bash cURL lines theme={null}
    PATCH https://acme.eu.auth0.com/api/v2/clients/{id}
    {
      "oidc_logout": {
        "backchannel_logout_urls": []
      }
    }
    ```
  </Tab>
</Tabs>

<h2 id="configure-your-application">
  アプリケーションを設定する
</h2>

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` の値に対応するセッションを取得し、終了します。アプリケーションセッションを終了する具体的な方法は、実装の詳細によって異なります。たとえば、このイベントをフロントエンドに通知する必要がある場合があります。

<h2 id="oidc-back-channel-logout-request-example">
  OIDC バックチャネルログアウト リクエストの例
</h2>

コード化されたトークンのペイロード:

```bash cURL lines theme={null}
POST /backchannel-logout HTTP/1.1
Host: rp.example.org
Content-Type: application/x-www-form-urlencoded

logout_token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImdwY3ZFT0FPREE2T3pXRmw3ODVxbCJ9.eyJpc3MiOiJodHRwczovL2FydGV4LWRldi5ldS5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NjAyZTkzZGI4M2ZhNmYwMDc0OWEyM2U2IiwiYXVkIjoiVHVoTkx2N3VsWEQzUmZ5TGxTTWJPdnN6endKSkZQcE8iLCJpYXQiOjE2OTgxNjA5MjgsImV4cCI6MTY5ODE2MTA0OCwianRpIjoiNDRhOTEyMTUtZGZiNC00ZGZlLWExZWItZmNhZmE5MTFkZWJhIiwiZXZlbnRzIjp7Imh0dHA6Ly9zY2hlbWFzLm9wZW5pZC5uZXQvZXZlbnQvYmFja2NoYW5uZWwtbG9nb3V0Ijp7fX0sInRyYWNlX2lkIjoiODFiMzM2YTk0YTRhNTcwNyIsInNpZCI6IjM3NVVJcF9JRDVtQ1RDbEllQkVIcFhmR3dxNTF0Rl9MIn0.aEoAL_U-EPlf3f7Fup-bu7Yv0S0GOnrkL8Njd6j6UNqZcr5VrWWFf3CWvkRi7Cm6wMgU2qIMhb7643ca8-ajR7zHlMu0Z3r-gfd2D1xudKLyUSC3v2D5WJZz5I8xMZ_LWtIN2W3l4SQFO9MgK_7F3x0WIWXo9KPC9tgOaOLPnsiv__MutM1ZakoCsJPddl5gVM4TYtHOue6WM7SOXZNa3SSiv57YQOX2KNCL7sWmZp_J1OXKy8lsgkNFqiOVwu39p4sgjKYEXQU0G-I0yY_aeNbnlnxFG6OuxaDt_zwg6AvKglLSNGqrrvzy4GsYJi5HMGZ1GsSs7rQLg7Iuu6JM-A
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  トークンの有効期限は2分 (120秒) です。
</Callout>

デコード後のトークンペイロード:

```json JSON lines theme={null}
{
   "iss": "https://artex-dev.eu.auth0.com/",
   "sub": "auth0|602e93db83fa6f00749a23e6",
   "aud": "TuhNLv7ulXD3RfyLlSMbOvszzwJJFPpO",
   "iat": 1698160928,
   "exp": 1698161048,
   "jti": "44a91215-dfb4-4dfe-a1eb-fcafa911deba",
   "events": {
         "http://schemas.openid.net/event/backchannel-logout": {}
   },
   "trace_id": "81b336a94a4a5707",
   "sid": "375UIp_ID5mCTClIeBEHpXfGwq51tF_L"
}
```

<h2 id="expected-responses">
  想定されるレスポンス
</h2>

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

<h2 id="troubleshoot-issues">
  トラブルシューティング
</h2>

<h3 id="application-did-not-receive-the-logout-events">
  アプリケーションがログアウトイベントを受信しなかった
</h3>

ログアウトイベントの発生後に、アプリケーションがログアウトリクエストを受信しなかった場合。

1. アプリケーションに、Auth0 Dashboard でバックチャネルログアウト URL が登録されていることを確認します。
2. バックチャネルログアウト URL に Auth0 テナントからアクセスできることを確認します。
3. 有効なセッションが確立されていることを確認します。エンドユーザーは、Auth0 経由で対象のアプリケーションにログインしている必要があります。

   <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
     アプリケーションがログアウトイベントを受信するのは、エンドユーザーが Auth0 を使ってその特定のアプリケーションにログインした場合のみです。エンドユーザーがほかのアプリケーションにログインしていても、ログアウトイベントはトリガーされません。
   </Callout>
4. ログアウトメッセージの配信失敗に関するメッセージがないか、Auth0 テナントログを確認します。
5. ログアウトが標準のログアウトエンドポイント経由でトリガーされていることを確認します。ほかのイベントではログアウトイベントはトリガーされません。
6. 可能であれば、Web サーバーやアプリケーションのファイアウォールログで、ブロックされたリクエストがないか確認します。

<h4 id="i-cant-find-oidc-back-channel-logout-tenant-logs">
  OIDC バックチャネルログアウトのテナントログが見つかりません
</h4>

この機能は、2023 年 10 月 3 日からすべてのテナントに順次リリースされます。なお、[テナントログのイベントコード](/docs/ja-jp/deploy-monitor/logs/log-event-type-codes)には、`oidc_backchannel_logout_succeeded` の `sslo` または `oidc_backchannel_logout_failed` の `fslo` が引き続き表示される場合があります。

<h3 id="client-app-cannot-verify-the-received-logout-token">
  クライアントアプリで受信したログアウトトークンを検証できない
</h3>

トランザクションが引き続き 400 エラーで失敗する場合:

1. トークンが標準的な base64 エンコードの JWT であることを確認します。長いパラメーターは、一部の Web サーバーで途中で切り詰められることがあります。詳しくは、[署名アルゴリズム](/docs/ja-jp/get-started/applications/signing-algorithms) を参照してください。
2. 可能であればトークンを取得し、それが JWT であることを確認します。[JWT.IO](http://jwt.io) などの信頼できるソースを使用してください。
3. 検証関数が、[JSON Web Key Sets](/docs/ja-jp/secure/tokens/json-web-tokens/json-web-key-sets) (JWKS) を通じてテナントの署名鍵を動的に取得するようになっていることを確認します。

   <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
     静的なキーをハードコードすることは推奨していません。設定上どうしても静的なキーをハードコードする必要がある場合は、その設定に Auth0 テナントの最新の公開鍵が含まれていることを確認してください。
   </Callout>

<h3 id="response-timeout-errors">
  応答タイムアウトエラー
</h3>

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

<h2 id="learn-more">
  詳しくはこちら
</h2>

* [OIDC エンドポイントを使用して Auth0 からユーザーをログアウトする](/docs/ja-jp/authenticate/login/logout/log-users-out-of-auth0)
* [アプリケーションからユーザーをログアウトする](/docs/ja-jp/authenticate/login/logout/log-users-out-of-applications)
* [IDプロバイダーからユーザーをログアウトする](/docs/ja-jp/authenticate/login/logout/log-users-out-of-idps)
