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

# 匿名セッションのカスタムクレームを設定する

> クレームマッピングを使用して、匿名セッションのメタデータをアクセストークンのカスタムクレームにマッピングします。

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "Beta",
    "ea": "早期アクセス"
  };
  const stageText = stageTextMap[stage] || "製品リリース段階";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>この機能は{linkify(`${plans}プラン`, "https://auth0.com/pricing")}でご利用いただけます。 </>}
            {contact && "参加をご希望の場合は、" + contact + "までお問い合わせください。 "}
            {terms && <>この機能を使用することにより、Oktaの該当する無料トライアル規約および{linkify("Master Subscription Agreement", "https://www.okta.com/legal")}に同意したものとみなされます。</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>{feature}機能は現在、{linkify(stageText, prsLink)}です。</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

<ReleaseStageNotice feature="Anonymous Sessions" stage="ea" plans="Enterprise" contact="担当のアカウントエグゼクティブ" />

リソースサーバーがユーザーに関する追加情報を必要とするにもかかわらず、[アクセストークン](/docs/ja-jp/secure/tokens/access-tokens)しか渡していない場合は、[カスタムクレーム](/docs/ja-jp/secure/tokens/json-web-tokens/create-custom-claims)でアクセストークンを拡張し、追加のデータを格納できます。

カスタムクレームを設定する一般的な方法は、[`post-login`](/docs/ja-jp/customize/actions/explore-triggers/post-login)アクション内で[`api.accessToken.setCustomClaim()`](/docs/ja-jp/actions/reference/credentials-exchange/credentials-exchange-api-object#api-accesstoken-setcustomclaim-key-value)を呼び出すことです。しかし、[匿名セッション](/docs/ja-jp/manage-users/sessions/anonymous-sessions)のコンテキストではログインが発生しないため、`post-login`アクションも実行されません。その結果、通常の方法ではアクセストークンにカスタムクレームを追加できず、それらのクレームを前提とするAPIはクレームを読み取れなくなります。

この問題を解決するために、Auth0はクレームマッピングを提供しています。これは、匿名セッションのメタデータと、そのセッションに対して発行されるアクセストークンとを直接対応付ける仕組みです。たとえば、次の内容を含むセッションがあるとします。

```json theme={null}
{
  "user_id": "anon@1234-5678-90",
  "session_id": "sess_456",
  "metadata": {
    "language": "EN",
    "country": "US",
    "purchase": "P0123"
  }
}
```

APIが新規に作成する匿名アクセストークンごとに`language`の値を読み取り、`lang`というカスタムクレームとして含めるように構成できます。

<h2 id="configure-claims-mapping">
  クレームマッピングを構成する
</h2>

匿名セッションのクレームマッピングを構成するには、[Auth0 Dashboard](/docs/ja-jp/get-started/auth0-overview/dashboard)または[Management API](/docs/ja-jp/api/management/v2)を使用します。

<Tabs>
  <Tab title="Auth0 Dashboard">
    1. [**Dashboard > Applications > APIs**](https://manage.auth0.com/#/apis)に移動し、クレームを構成するAPIを選択します。

    2. **Claim Mapping**タブを選択します。

           <img src="https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/sessions/anonymous_sessions/anonymous_sessions_claim_mapping.png" alt="Auth0 Dashboardのアプリケーションクレームマッピングページ" />

    3. **Add a claim**で、クレームの**Name** (例：`lang`) と、`anonymous_session.metadata.*`配下の値を参照する**Expression** (例：`anonymous_session.metadata.language`) を入力し、**Add**を選択します。

    4. 既存のクレームを編集するには、その横にある鉛筆アイコンを選択します。削除するには、ゴミ箱アイコンを選択します。
  </Tab>

  <Tab title="Management API">
    APIのクレームマッピングを構成するには、[`/api/v2/resource-servers/{id}`](/docs/ja-jp/api/management/v2/resource-servers/patch-resource-servers-by-id)エンドポイントに`PATCH`リクエストを送信します：

    ```json theme={null}
    {
      "access_token": {
        "claims_mapping": {
          "custom_claims": [
            {
              "name": "tier",
              "expression": "anonymous_session.metadata.tier"
            },
            {
              "name": "lang",
              "expression": "anonymous_session.metadata.language"
            }
          ]
        }
      }
    }
    ```

    `custom_claims`の各エントリーは、発行されるアクセストークンのクレーム`name`を、`anonymous_session.metadata.<key>`のように匿名セッションから値を読み取る`expression`にマッピングします。

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      `PATCH`リクエストは`custom_claims`リスト全体を置き換えるため、残しておきたいクレームはすべて含める必要があります。`PATCH`の前に`GET`リクエストで既存のクレームを取得し、必要な変更を加えたうえで、オブジェクト全体を`PATCH`リクエストで渡してください。
    </Callout>
  </Tab>
</Tabs>

<h2 id="next-steps">
  次のステップ
</h2>

<Card title="匿名セッションのユースケース" icon="lightbulb" href="/docs/ja-jp/manage-users/sessions/anonymous-sessions/anonymous-sessions-use-cases" horizontal>
  匿名セッションのユースケースについて学びます。
</Card>
