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

アクセストークンやIDトークンのカスタムクレームを読み出すには、JSON Web Token(JWT)を使用して、OIDCのログインフローでオーディエンス(aud)を渡す必要があります。詳細については、「アクセストークン」をお読みください。

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

一般的な制限

Auth0は、カスタムクレームに以下の制限を適用します。

  • カスタムクレームのペイロードは最大100 KBに設定される

  • OpenID標準クレームや、Auth0によって内部的に使用されるクレームは、カスタマイズや変更できない

  • /userinfoエンドポイントを除いて、Auth0 APIオーディエンスのアクセストークンには、名前空間のない、プライベートなカスタムクレームが含まれてはいけない

  • 指定された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

制限のないクレーム

機密のユーザー情報のクレームを作成して、ユーザープロファイルを強化し、ユーザーエクスペリエンスを向上させることができます。これらのクレームは、IDトークンからアプリケーションによって利用されます。制限のないクレームの詳細については、「IDトークン」をお読みください。使用の際には、「トークンのベストプラクティス」を考慮してください。

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

  • 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

名前空間のガイドライン

名前空間識別子については、以下のガイドラインを使用してください。

  • Auth0以外のHTTPまたはHTTPS URLを名前空間識別子として使用します。Auth0のドメインは名前空間識別子として使用できません。これには以下のものが含まれます。

    • auth0.com

    • webtask.io

    • webtask.run

  • 自分が管理しているURLを名前空間識別子として使用します。これにより、他の誰かが同じ名前空間を使用するリスクを回避できます。この名前空間URLが実際のリソースを指す必要はありません。これは呼び出されることがなく、識別子としてのみ使用されます。

  • URLはhttp://またはhttps://で始めます。

  • 必要に応じて、複数の名前空間を作成します。

  • 必要に応じて、複数の名前空間を作成します。

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

http://www.example.com/favorite_color

非名前空間のガイドライン

非名前空間のカスタムクレームについては、次のガイドラインを使用してください。

  • アプリケーションに絶対に必要な場合を除き、衝突耐性のあるパブリックの名前空間カスタムクレームを使用してください。

  • 衝突耐性のある、分かりやすい名前のクレームを作成します。たとえば、employee_idを使用します。e_idにはしません。

  • クレームの名前と値をできるだけ軽くし、アプリケーションに絶対に必要なデータのみを渡すようにします。

  • 重いペイロードをカスタムクレームに割り当てないようにします。

トークンに追加されるカスタムクレームの他の例については、「ユースケースの例:スコープとクレーム」を参照してください。

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

カスタムクレームを作成するには、Auth0 Actionsを使用します。apiオブジェクトを使用すると、アクセストークンやIDトークンにsetCustomClaimメソッドが使えるようになります。

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

Was this helpful?

/

もっと詳しく