> ## 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.

> カスタムクレーム用の衝突しにくい名前を作成する方法を説明します。

# カスタムクレームを作成する

アクセストークンと<Tooltip tip="IDトークン: リソースへのアクセスではなく、クライアント自体を対象とした認証情報。" cta="用語集を見る" href="/ja/docs/glossary?term=ID+tokens">IDトークン</Tooltip>上のカスタムクレームを読み取るには、<Tooltip tip="IDトークン: リソースへのアクセスではなく、クライアント自体を対象とした認証情報。" cta="用語集を見る" href="/ja/docs/glossary?term=JSON+Web+Tokens">JSON Web Tokens</Tooltip> (JWT) を使用し、OIDC のログインフローで<Tooltip tip="JSON Web Token（JWT）: 2 者間でクレームを安全に表現するために使用される標準的な IDトークン形式（および多くの場合はアクセストークン形式）。" cta="用語集を見る" href="/ja/docs/glossary?term=audience">オーディエンス</Tooltip> (`aud`) を渡す必要があります。詳しくは、[アクセストークン](/ja/docs/secure/tokens/access-tokens)を参照してください。

JWT でカスタムクレームを設定する際は、名前の衝突を避ける必要があります。カスタムクレームが予約済みクレームや他のリソースのクレームと衝突しないよう、衝突しにくい名前を付けてください。Auth0 では、名前空間付き形式の使用を推奨しています。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0 では名前空間付きクレームと名前空間なしクレームの両方を使用できますが、いくつかの制限があります ([一般的な制限事項](/ja/docs/secure/tokens/json-web-tokens/create-custom-claims#general-restrictions)を参照) 。名前の衝突を避けるため、名前空間付きクレームの使用を推奨します。衝突が発生してもトランザクションは失敗しませんが、カスタムクレームはトークンに追加されません。
</Callout>

<div id="general-restrictions">
  ## 一般的な制限
</div>

Auth0 では、カスタムクレームに次の制限が適用されます。

* カスタムクレームのペイロードの上限は 100KB です
* [OPENID 標準クレーム](https://openid.net/specs/openid-connect-core-1_0.html#IDToken)および Auth0 が内部で使用するクレームは、カスタマイズまたは変更できません
* `/userinfo` エンドポイントを除き、Auth0 API のオーディエンスを持つ <Tooltip tip="アクセストークン: API へのアクセスに使用される、不透明な文字列または JWT 形式の認可資格情報。" cta="用語集を見る" href="/ja/docs/glossary?term=Access+tokens">アクセストークン</Tooltip> には、名前空間なしのプライベートなカスタムクレームを含めることはできません
* 指定された OIDC のユーザープロフィールクレームのみをアクセストークンに追加できます

以下のクレームは Auth0 の制限対象です。

* `acr`
* `act`
* `active`
* `amr`
* `at_hash`
* `ath`
* `attest`
* `aud`
* `auth_time`
* `authorization_details`
* `azp`
* `c_hash`
* `client_id`
* `cnf`
* `cty`
* `dest`
* `entitlements`
* `events`
* `exp`
* `groups`
* `gty`
* `htm`
* `htu`
* `iat`
* `internalService`
* `iss`
* `jcard`
* `jku`
* `jti`
* `jwe`
* `jwk`
* `kid`
* `may_act`
* `mky`
* `nbf`
* `nonce`
* `object_id`
* `org_id`
* `org_name`
* `orig`
* `origid`
* `permissions`
* `roles`
* `rph`
* `s_hash`
* `sid`
* `sip_callid`
* `sip_cseq_num`
* `sip_date`
* `sip_from_tag`
* `sip_via_branch`
* `sub`
* `sub_jwk`
* `toe`
* `txn`
* `typ`
* `uuid`
* `vot`
* `vtm`
* `x5t#S256`

<div id="non-restricted-claims">
  ### 制限対象ではないクレーム
</div>

機微なユーザー情報に関するクレームを作成すると、ユーザープロフィールを充実させ、ユーザー体験を向上させることができます。これらのクレームは、アプリケーションがIDトークンから利用します。制限対象ではないクレームの使用方法について詳しくは、[IDトークン](/ja/docs/secure/tokens/id-tokens)を参照してください。使用する場合は、[トークンのベストプラクティス](/ja/docs/secure/tokens/token-best-practices)も考慮してください。

次のクレームには、一般的な制限のみが適用されます。

* `address`
* `birthdate`
* `email`
* `email_verified`
* `family_name`
* `gender`
* `given_name`
* `locale`
* `middle_name`
* `name`
* `nickname`
* `phone_number`
* `phone_number_verified`
* `picture`
* `preferred_username`
* `profile`
* `updated_at`
* `website`
* `zoneinfo`

<div id="namespaced-guidelines">
  ## 名前空間付きガイドライン
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0 URN `urn:auth0` は、名前空間識別子として使用できません。
</Callout>

名前空間識別子については、次のガイドラインに従ってください。

* 名前空間識別子には、Auth0 以外の任意の HTTP または HTTPS URL を使用します。Auth0 のドメインは名前空間識別子として使用できません。具体的には、次のものが該当します。

  * auth0.com
  * webtask.io
  * webtask.run
* 名前空間識別子には、自身で管理している URL を使用します。これにより、他者が同じ名前空間を使用しているリスクを回避できます。名前空間 URL は、実際のリソースを指している必要はありません。これは識別子としてのみ使用され、呼び出されることはありません。
* URL は `http://` または `https://` で始めます。
* また、カスタム API を使用する場合は、URN ベースの名前空間識別子を使用することもできます。その場合、Auth0 URN `urn:auth0` は予約されているため、名前空間識別子として使用できません。
* 必要に応じて、複数の名前空間を作成します。

名前空間を選択したら、それにクレームを追加して、トークンに追加できる名前空間付きクレームを作成します。例:

`http://www.example.com/favorite_color`

<div id="non-namespaced-guidelines">
  ## 名前空間なしのガイドライン
</div>

名前空間なしのカスタムクレームには、次のガイドラインに従ってください。

* アプリケーションで絶対に必要な場合を除き、衝突しにくい公開の名前空間付きカスタムクレームを使用してください。
* クレームは、意味が明確で衝突しにくい名前で作成してください。たとえば、`e_id` ではなく `employee_id` を使用します。
* クレーム名と値はできるだけ軽量にし、アプリケーションに本当に必要なデータだけを渡してください。
* カスタムクレームに大きなペイロードを設定するのは避けてください。

トークンに追加するカスタムクレームの例については、[サンプルユースケース: スコープとクレーム](/ja/docs/get-started/apis/scopes/sample-use-cases-scopes-and-claims)を参照してください。

<div id="create-custom-claims">
  ## カスタムクレームを作成する
</div>

Auth0 Actions を使用してカスタムクレームを作成します。`api` オブジェクトでは、アクセストークンまたは IDトークン に対して `setCustomClaim` メソッドを使用できます。

<div id="example">
  ### 例
</div>

```js lines theme={null}
exports.onExecuteCredentialsExchange = async (event, api) => {
  api.accessToken.setCustomClaim('myClaim', 'this is a private, non namespaced claim');
};
```

<div id="learn-more">
  ## 詳細
</div>

* [JSON Web Token のクレーム](/ja/docs/secure/tokens/json-web-tokens/json-web-token-claims)
* [OpenID Connect のスコープ](/ja/docs/get-started/apis/scopes/openid-connect-scopes)
