> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/llms.txt
> Use this file to discover all available pages before exploring further.

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

> Auth0のサービスでOIDCバックチャネルログアウトを構成する方法について説明します。

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

  * Auth0テナントがアクセスできるように、OIDCバックチャネルログアウトのURIエンドポイントがインターネット上で公開されている必要があります。
  * 本番環境の準備が整ったアプリケーションはTLSを使用する必要があります。詳細については、「[TLS（SSL）のバージョンと暗号](/docs/ja-jp/customize/custom-domains/self-managed-certificates/tls-ssl)」をお読みください。
  * アプリケーションは提供されたセッション識別子（`sid`）を保管し、作成するユーザーセッションとその識別子を関連付けられなくてはなりません。本番環境のアプリケーションにはセッションで持続性ストレージの使用を推奨します。
  * アプリケーションは、クライアント側のクッキーを使うことなく、ログアウトプロセス中に`sid`を使って既存のセッションを取得できなくてはなりません。クッキーはブラウザー内に存在しており、ログアウトコールバックのエンドポイントにはアクセスできません。
</Card>

## 利用

OIDCバックチャネルログアウトは、すべてのエンタープライズプランのお客様が利用するためのものです。アプリケーションが要件を満たしているかを確認するには、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 }
```

## バックチャネルログアウトでの制約

バックチャネルログアウトURLは公開されたエンドポイントで呼び出され、特定の制約を守らなければなりません。

1. HTTPSプロトコルを使用する必要があります。暗号化されていない HTTPや他のプロトコルは許可されません。
2. Auth0のサブドメインを使用してはいけません。Auth0のサブドメインには以下が挙げられます。

   * auth0.com
   * auth0app.com
   * webtask.io
   * webtask.run
3. ドメインのないIPアドレスの使用は推奨されません。バックチャネルログアウトを使用するには、IPアドレスが公開IPでなければなりません。範囲が内部、予約済み、またはループバックのIPアドレスは許可されていません。

## Auth0を構成する

<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>または<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>を使用してログアウトトークンを取得するには、アプリケーションを登録します。

<Tabs>
  <Tab title="Auth0 Dashboard">
    #### アプリケーションの登録

    1. [**［Auth0 Dashboard］ > ［Applications（アプリケーション）］** ](https://manage.auth0.com/#/applications)に移動します。
    2. 登録したいアプリケーションを選択します。
    3. **［Settings（設定）］** タブを選択します。
    4. **［OpenID Connect Back-Channel Logout（Open ID Connectバックチャネルログアウト）］ > ［Back-Channel Logout URI（バックチャネルログアウトURl）］** の下に、logout\_tokensを受け取るアプリケーションのログアウトURIを追加します。
    5. 完了したら、 **［Save Changes（変更を保存）］** を選択します。

           <Frame>
             <img src="https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/ja-jp/cdy7uua7fh8z/19uQRkVswdmaO8gHTVTXCc/02e3bc83d556166bbc340e11c14e382e/Backchannel_Logout_-_URI.png" alt="Auth0 Dashboard > Applications > Settings" />
           </Frame>

    #### アプリケーションの登録解除

    アプリケーションの登録を解除すると、新しいログインのトラッキングやログアウトイベントの送信といったサービスが停止します。アプリケーションの登録が解除されると、ログアウトイベントのペンディングが破棄されます。

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

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

           <Frame>
             <img src="https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/ja-jp/cdy7uua7fh8z/5SlrBhwrNbJx0Wdw2kQ19t/5c11c2d03587393e542ef07677edbf42/Backchannel_Logout_-_URI.png" alt="Auth0 Dashboard > Applications > Settings" />
           </Frame>

    監査の目的で、Auth0のテナントログで、バックチャネルログアウトURLのサブスクライブや、その解除を`API Operation Event`として常にロギングしています。詳細については、「[ログ](/docs/ja-jp/deploy-monitor/logs)」をお読みください。
  </Tab>

  <Tab title="Management API">
    #### アプリケーションの登録

    API Managementを通してクライアントを`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>

    #### アプリケーションの登録解除

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

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

## アプリケーションを構成する

Auth0 DashboardまたはManagement APIを使用してバックチャネルログアウトを構成したら、技術やフレームワークに基づいて、アプリケーションがサービスを使用できるように構成します。

1. アプリケーションの種類に応じてエンドユーザーの認証を実装します。

   1. エンドユーザーがアプリケーションにログイン可能で、セッションが作成されなければなりません。
   2. IDトークンがAuth0から発行され、アプリケーションのバックエンドで処理するためにアクセスできなければなりません。
2. IDトークンが検証された後、ログインプロセスを拡張して`sid`クレームと、任意でsubクレームを保存します。

   1. これらのクレームは、現在のアプリケーションセッションに対して保存されなければなりません。
   2. セッション管理機能は、`sid`値によって特定のセッションを取得できる必要があります。
3. バックチャネルログアウトのエンドポイントを構成します。

   1. エンドポイントは`HTTP POST`要求のみを処理する必要があります。
   2. `logout_token`パラメーターを抽出し、仕様に従って通常のJWTとして検証します。
   3. トークンに、JSONオブジェクト値と`http://schemas.openid.net/event/backchannel-logout`という名前のメンバーを含むeventsクレームが含まれていることを確認します。
   4. トークンに`sid`クレームおよび/または`sub`クレームが含まれていることを確認します。
   5. トークンに`nonce`クレームが含まれていないことを確認します。これは、不正使用を防止するために、ログアウトトークンとIDトークンを区別するのに必要です。
   6. トークンが検証されると、受信した`sid`や`sub`値に対応するセッションを取得して終了します。実際のアプリケーションセッションの終了プロセスは、実装の詳細によって異なります。たとえば、このイベントはフロントエンドに知らせる必要があるかもしれません。

## OIDCバックチャネルログアウト要求の例

エンコードされたトークンのペイロード：

```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"
}
```

## 予期される応答

* **HTTP 200** ：特定のアプリケーションでユーザーのログアウトが確認されました。
* **HTTP 400** ：不正な要求です。要求が理解不可能か、トークンが検証に失敗しました。Auth0はテナントログに問題を記録しますが、特定のセッションに対してさらに要求を送ろうとはしません。

## 問題のトラブルシューティング

### アプリケーションがログアウトイベントを取得しない

アプリケーションがログアウトイベント後にログアウト要求を取得しない場合には、以下を行います。

1. アプリケーションが、Auth0 DashboardでバックチャネルログアウトURLに登録されていることを確認します。

2. バックチャネルログアウトURLにAuth0テナントから到達できることを確認します。

3. 有効なセッションが確立されていることを確認します。エンドユーザーはAuth0を介して特定のアプリケーションにログインしなければなりません。

   <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
     アプリケーションは、エンドユーザーがAuth0でそのアプリにログインしたときだけ、ログアウトイベントを受け取ります。エンドユーザーが他のアプリケーションにログインした場合、ログアウトイベントはトリガーされません。
   </Callout>

4. Auth0のテナントログで、ログアウトのメッセージ送信が失敗したというメッセージを確認します。

5. ログアウトが標準のログアウトエンドポイントを通してトリガーされていることを確認します。他のイベントはログアウトイベントをトリガーしません。

6. 可能であれば、Webサーバーのログとアプリケーションのファイアウォールのログで、阻止された要求を確認します。

7. バックチャネルログアウトエンドポイントで有効な証明書（自己署名ではない）を使用していることを確認します。

#### OIDCバックチャネルログアウトのテナントログが見つからない

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

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

トランザクションが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>

### 応答タイムアウトエラー

Auth0はアプリケーションのOIDCバックチャネルログアウトの応答を5秒間待機します。その後、「Failed OIDC Back-Channel Logout request（OIDCバックチャネルログアウト要求の失敗）」を、応答の説明なくテナントログに記録します。

## もっと詳しく

* [ログインとログアウトの問題を確認する](/docs/ja-jp/troubleshoot/authentication-issues/check-login-and-logout-issues)
* [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)
