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

> Actions と Management API を使用して Auth0 セッションメタデータを設定する方法について説明します

# セッションメタデータを設定する

セッションメタデータを設定するには、Auth0 の [Post-Login Action](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger) と [Management API](https://auth0.com/docs/api/management/v2) を使用できます。また、[OpenID Connect バックチャネルログアウト](/docs/ja-jp/authenticate/login/logout/back-channel-logout) のトークンに含めることもできます。

<Warning>
  Auth0 セッションメタデータは安全なデータストアではないため、機密情報の保存には使用しないでください。これには、シークレットや、社会保障番号、クレジットカード番号などの高リスクな PII が含まれます。Auth0 をご利用のお客様には、メタデータに保存するデータを十分に評価し、アイデンティティおよびアクセス管理の目的に必要なものだけを保存することを強く推奨します。詳細については、[Auth0 General Data Protection Regulation Compliance](/docs/ja-jp/secure/data-privacy-and-compliance/gdpr) をご覧ください。
</Warning>

## Auth0 Management API

Management API を使用すると、セッションメタデータに対する CRUD (作成、置換、更新、削除) リクエストを管理できます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  `/api/v2/sessions/{id}` エンドポイントの呼び出しには、`update:session` スコープを持つ [Management API access token](/docs/ja-jp/secure/tokens/access-tokens) が必要です。
</Callout>

<div id="retrieve-existing-session-metadata">
  ### 既存のセッションメタデータを取得する
</div>

[`/api/v2/sessions/{id}`](https://auth0.com/docs/api/management/v2/sessions/get-session) エンドポイントに `GET` リクエストを送信します。

```bash lines theme={null}
GET /api/v2/sessions/{id}
```

<div id="add-or-update-existing-session-metadata">
  ### 既存のセッションメタデータを追加または更新する
</div>

[`/api/v2/sessions/{id}`](https://auth0.com/docs/api/management/v2/sessions/patch-sessions-by-id) エンドポイントに `PATCH` リクエストを送信します:

```bash lines theme={null}
PATCH /api/v2/sessions/{id}
Content-Type: application/json

{
  "session_metadata": {
    "my_metadata": "my new metadata"
  }
}
```

<div id="delete-session-metadata">
  ### セッションメタデータを削除する
</div>

[`/api/v2/sessions/{id}`](https://auth0.com/docs/api/management/v2/sessions/patch-sessions-by-id) エンドポイントに `PATCH` リクエストを送信します。

```bash lines theme={null}
PATCH /api/v2/sessions/{id}
Content-Type: application/json

{
  "session_metadata": {}
}
```

<div id="auth0-post-login-actions">
  ## Auth0 Post-Login Actions
</div>

[post-login Action](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger) では、`api.session` オブジェクトを使用してセッションメタデータの CRUD 操作を行えます。これにより、ユーザーごと、またはコンテキスト固有のロジックに基づいてセッションメタデータを管理できます。

<div id="retrieve-existing-session-metadata">
  ### 既存のセッションメタデータを取得する
</div>

`deviceName` メタデータを読み取るには、`event.session.metadata?.deviceName` を使用します。

```javascript lines theme={null}
const device = event.session.metadata?.deviceName;
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  `event.session.metadata` オブジェクトには、次で設定されたメタデータが含まれます。
  \*同じフロー内の前の Actions
  \*セッションが再利用された場合は、以前のトランザクション
</Callout>

<div id="add-or-update-existing-metadata">
  ### 既存のメタデータを追加または更新する
</div>

セッションメタデータを更新するには、`api.session.setMetadata()` メソッドを使用します。

```javascript lines theme={null}
api.session.setMetadata("deviceName", "Auth0's iPhone");
```

変更内容は、以降のActionsの `event.session` オブジェクトですぐに利用できます。

<div id="delete-session-metadata">
  ### セッションメタデータを削除する
</div>

セッションメタデータを削除するには、次の `api.session` オブジェクトを使用します。

* `api.session.deleteMetadata("key")` は、指定したセッションメタデータを削除します

* `api.session.evictMetadata()` は、すべてのセッションメタデータを削除します

これらのオブジェクトの詳細については、以下を参照してください。

* [イベントオブジェクト](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object): リフレッシュトークンのイベントオブジェクトとそのプロパティについて説明します。
* [API object](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-api-object): リフレッシュトークンの API object とそのメソッドについて説明します。

<div id="oidc-back-channel-logout">
  ## OIDC バックチャネルログアウト
</div>

Auth0 [Auth0 Dashboard](/docs/ja-jp/get-started/auth0-overview/dashboard) または [Management API](https://auth0.com/docs/api/management/v2) を使用して、`logout_token` にセッションメタデータを含めるよう設定できます。

<div id="auth0-dashboard">
  ### Auth0 Dashboard
</div>

セッションメタデータを含む OIDC Back-Channel Logout トークンを設定するには、次の手順に従います。

1. [Auth0 Dashboard > アプリケーション](https://manage.auth0.com/#/applications) に移動し、対象のアプリケーションを選択します。

2. **設定** タブを選択します。

3. **OpenID Connect Back-Channel Logout > Back-Channel Logout URL** で、`logout_tokens` を受信するアプリケーションのログアウト URI を追加します。

4. **Back-Channel Logout Initiators** を次のいずれかに設定します。

   * **Selected initiators only** または

   * **All supported initiators**

5. **Include Session Metadata** をオンにします。

6. **変更を保存** を選択します。

設定が完了すると、`logout_token` には保存されているすべてのセッションメタデータが含まれます。

<div id="auth0-management-api">
  ### Auth0 Management API
</div>

[`/api/v2/clients/{id}`](https://auth0.com/docs/api/management/v2/sessions/patch-sessions-by-id) エンドポイントを使用すると、`logout_token` にセッションメタデータを含めるようアプリケーションを更新できます。

[`/api/v2/sessions/{id}`](https://auth0.com/docs/api/management/v2/sessions/patch-sessions-by-id) エンドポイントに `PATCH` リクエストを送信します:

```json lines theme={null}
"oidc_backchannel_logout": {
  "backchannel_logout_initiators": {
    "mode": "all"
  },
  "backchannel_logout_urls": [
    "https://httpdump.app/inspect/9bccf574-e55f-4b2e-9822-f37372588fc1"
  ],
  "backchannel_logout_session_metadata": {
    "include": true
  }
}
```

<div id="error-handling">
  ## エラー処理
</div>

[Auth0 Dashboard > Monitoring > Logs](https://manage.auth0.com/#/logs) に移動してセッションメタデータのログイベントを確認するか、[Management API logs](/docs/ja-jp/api/management/v2/logs/get-logs)エンドポイントを使用してログを取得できます。

* Actions を使用したセッションメタデータの追加または更新中にエラーが発生した場合、認証トランザクションは失敗し、エラーがコールバックURLに返されます。

失敗を示す `f` イベントコードが、対応するエラーとともにログに記録されます:

```json lines theme={null}
{
  "error": "access_denied",
  "error_description": "Failed to set session metadata: Invalid metadata: Metadata keys may only include letters, numbers, underscores, or hyphens",
  "state": "my-custom-state"
}
```

* Auth0 Management API を使用したセッションメタデータの管理でエラーが発生した場合、API は対応するメッセージとともに `HTTP status: 400` エラーを返します。

```json lines theme={null}
{
  "statusCode": 400,
  "message": "Metadata must not exceed 25 entries. Each key and value must be ≤ 255 characters."
}
```
