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

> Actionで名前空間付きキーを使用してAuth0のアクセストークンとIDトークンにカスタムクレームを追加し、追加のユーザーまたはアプリケーションデータをAPIに渡します。

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

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

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

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0では名前空間付きクレームと非名前空間クレームの両方を使用できますが、いくつかの制限があります ([一般的な制限](/docs/ja-jp/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 が内部で使用するクレームは、カスタマイズまたは変更できません
* Auth0 API の オーディエンス を持つ <Tooltip tip="Access Token: API にアクセスするために使用される認可資格情報で、不透明な文字列または JWT の形式を取ります。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Access+tokens">アクセストークン</Tooltip> には、`/userinfo` エンドポイントを除き、非名前空間のプライベートなカスタムクレームを含めることはできません
* 指定された 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トークン](/docs/ja-jp/secure/tokens/id-tokens)を参照してください。使用する際は、[トークンのベストプラクティス](/docs/ja-jp/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` を使用します。
* クレーム名とその値はできるだけ軽量にし、アプリケーションに本当に必要なデータだけを含めてください。
* カスタムクレームに重いペイロードを割り当てることは避けてください。

トークンに追加するカスタムクレームの例については、[スコープとクレームのユースケース例](/docs/ja-jp/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 のクレーム](/docs/ja-jp/secure/tokens/json-web-tokens/json-web-token-claims)
* [OpenID Connect のスコープ](/docs/ja-jp/get-started/apis/scopes/openid-connect-scopes)
