Skip to main content
2022年7月28日以降、Auth0 では、非公開かつ名前空間なしのカスタムクレームをアクセストークンと に追加できるようになりました。これらのクレームは、/userinfo エンドポイント のレスポンスにも追加されます。 クレームの種類について詳しくは、JSON Web Token Claims をご覧ください。
非公開かつ名前空間なしのカスタムクレームを使用できますが、Auth0 では、可能な限り公開の名前空間付きカスタムクレームを使用することを強く推奨しています。公開の名前空間付きカスタムクレームは、今後標準に追加されるクレームとの衝突を避ける最善の方法です。

これまで、Auth0 ではアクセストークンと ID トークンには名前空間付きクレームのみを設定できました。カスタムクレームへの移行により、名前空間なしのクレームを 、ID トークン、そして Auth0 の Authentication API の /userinfo エンドポイントで使用できるようになりました。

影響を受けるフロー

Auth0 がサポートするすべての Connect (OIDC) フローは、この移行の影響を受けます。フローの一覧については、認証および認可フローをご覧ください。 次の機能も影響を受けます: 次の機能は、ルールおよび属性マッピングと併用する場合にのみ影響を受けます:

制限事項

最大トークンサイズ

Auth0 では、カスタムクレームのペイロードは最大 100KB に制限されます。ペイロードがこの上限を超えないようにすることが重要です。上限を超えると、認証トランザクションはエラーとなって失敗します。拡張コード (たとえば、RulesHooks、または Actions) の使用状況を見直すことをお勧めします。特に、外部 API からの大きなペイロードを確認してください。 エラーを回避するため、Auth0 ではアプリケーションの動作に必要な最小限のトークンペイロードを使用することを推奨しています。カスタムクレームの値を設定する前に、重要でないプロパティを削除する必要がある場合があります。
この制限は、すべてのカスタムクレームのペイロードの合計サイズに適用されます。これには、カスタムクレーム名とそれに対応する値の両方が含まれ、パブリックな名前空間付きか、プライベートな名前空間なしかは問いません。
100KB の制限は、アクセストークンと ID トークンにそれぞれ個別に適用されます。たとえば、100KB のアクセストークンと 100KB の ID トークンを同じトランザクションで返すことができます。

制限対象のクレーム

Auth0 では、OIDC または OAuth2 標準で使用されるクレームや、内部利用向けのクレームのカスタマイズは制限されています。これらのクレームを変更しようとしても、その変更は無視されます。transaction は失敗しませんが、そのクレームは token に追加されません。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

制限対象のトークン audience

が Auth0 API であるアクセストークンでは、非公開かつ名前空間なしのカスタムクレームの作成が Auth0 によって制限されます。audience が Auth0 API のアクセストークンに非公開かつ名前空間なしのカスタムクレームを設定しようとしても、その試みは無視されます。トランザクションは失敗しませんが、そのクレームはトークンに追加されません。Auth0 は、Auth0 の API で使用されるトークンにはカスタムクレームを設定しないことを推奨しています。
  • ID トークンはこの制限の対象ではありません。
  • 公開の名前空間付きカスタムクレームはこの制限の対象ではありません。
次の audience では、非公開かつ名前空間なしのカスタムクレームの作成が制限されます。
  • https://YOUR_TENANT.auth0.com/api または https://YOUR_TENANT.auth0app.com/api
  • https://YOUR_TENANT.auth0.com/api/v2 または https://YOUR_TENANT.auth0app.com/api/v2
  • https://YOUR_TENANT.auth0.com/mfa または https://YOUR_TENANT.auth0app.com/mfa
この制限の例外は Auth0 の /userinfo audience です。次の audience では、非公開かつ名前空間なしのカスタムクレームが許可されます。
  • https://YOUR_TENANT.auth0.com/userinfo
  • https://YOUR_TENANT.auth0app.com/userinfo

以下の例は、audience が Auth0 API でない場合に返される、カスタムクレームを含むレスポンスを示しています。
以下の例は、Auth0 API の audience を追加しない場合に、カスタムクレームが追加されないレスポンスを示しています。

Auth0 および Webtask の名前空間に関する制限

Auth0 では、名前空間の identifier として Auth0 ドメインを使った、名前空間付きカスタムクレームは作成できません。Auth0 ドメインは次のとおりです。
  • auth0.com
  • webtask.io
  • webtask.run
上記いずれかのドメインを identifier として使って token に名前空間付きカスタムクレームを設定しようとしても、その試みは無視されます。transaction 自体は失敗しませんが、クレームは token に追加されません。
この移行以前は、Auth0 ドメインを identifier にした名前空間付きカスタムクレームを設定すると、そのクレームは /userinfo レスポンスに含まれていました。移行後はこの挙動はなくなり、そのようなカスタムクレームは完全に無視されます。

OIDC ユーザープロファイルのクレーム

Auth0 で、OIDC ユーザープロファイルのクレームをアクセストークンに追加できるようになりました。 この移行以前は、アクセストークンに OIDC ユーザープロファイルのクレームを追加しようとしても、何も通知されないまま無視されていました。更新後の動作では、アクセストークンにこれらの OIDC ユーザープロファイルのクレームが含まれるようになります。
OIDC ユーザープロファイルのクレームをアクセストークンに追加する場合は、ID トークンと同じスコープの制限が適用されます。たとえば、アクセストークンに email クレームを追加するには、そのフローが email を含む scope でトリガーされる必要があります。
次の OIDC ユーザープロファイルのクレームをアクセストークンに追加できます。
  • 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 ルールを使用した SAML2 add-on および Web Service Federation Protocol (WS-Fed) の属性マッピング

Auth0 ルールを使用してユーザーオブジェクトに変更を加える場合と同様に、app_metadata または user_metadata の移行前クレームでも、クレームが context.idToken オブジェクトに設定されていて名前が競合する場合は、内容がマージされます。オブジェクトのプロパティについて詳しくは、Rules 内のユーザーオブジェクトのプロパティ を参照してください。 ただし、カスタムクレームを使用する場合、Auth0 は context.idToken オブジェクトに設定されたクレームを優先します。 この変更は、context.id_token を介して app_metadatauser_metadata を設定し (それらにオブジェクトを代入し) 、同時に add-on または Protocol (WS-Fed) の属性マッピングでこれらのフィールドを使用する Auth0 ルールに影響します。 例 1: context.idToken.app_metadata が空のオブジェクトに設定されている場合、Auth0 は属性マッピングを無視します。
この移行前のSAMLレスポンス:
アップグレード後の動作におけるSAMLレスポンス:
例 2: context.id_tokenapp_metadata バージョンが優先されます。
移行前のSAMLレスポンス:
アップグレード後の動作での SAML レスポンス:

トークンに非公開かつ名前空間なしのカスタムクレームを追加する

カスタムクレームのベータプログラムのメンバーの場合、カスタムクレームの動作に変更はありません。この機能はすでに有効です。
アクセス トークンと ID トークンのペイロードに、非公開かつ名前空間なしのカスタムクレームを追加できるようになりました。

/userinfo に返される非公開かつ名前空間なしのカスタムクレーム

Auth0 では、ID トークンに設定された非公開かつ名前空間なしのカスタムクレームが /userinfo のレスポンスでも返されるようになりました。

Actions

テナントのログを確認する

まず、テナントがこの移行の影響を受けるかどうかを確認するため、テナントのログで非推奨化の通知を確認します。
  1. Auth0 Dashboard > Monitoring > Logs に移動します。
  2. ログで type: depnote AND description: *Custom*claims* を検索します。

以下に、拡張コードが実行されるたびに生成される非推奨化ログの例を示します。

SAML2 アドオンおよび Web Service Federation Protocol (Ws-Fed) 用のルールを修正する

SAML2 アドオンまたは Web Service Federation Protocol (Ws-Fed) で属性マッピングとあわせて ルールを使用し、context.idToken オブジェクトに app_metadata または user_metadata のクレームを設定している場合は、これらのオブジェクト間でクレーム名が競合した際の Auth0 の評価方法に合わせて、設定を更新する必要があります。対処方法としては、次のようなものがあります。
  • ルールのコードで、context.id_token に設定したオブジェクトの内容が常に優先されるようにしてください。
  • SAML2 アドオンまたは Web Service Federation Protocol (Ws-Fed) の属性マッピングを使用している場合は、context.idToken オブジェクトに app_metadata または user_metadata のクレームを設定しないでください。可能であれば、これらのクレームは名前空間付きクレームに置き換えてください。
  • 現在のプロトコルまたは現在の client に条件を設け、プロトコルが samlp または wsfed の場合は、app_metadata または user_metadata を設定する記述を除外してください。

従来の動作を無効にする

従来の動作を無効にする前に、変更点の一覧を確認し、アプリケーションと連携に互換性があることを確認することをおすすめします。
テナントにこのトグルオプションが表示されない場合、そのテナントは影響を受けていないため、ほかに必要な対応はありません。
  1. Auth0 Dashboard > Tenant Settings > Advanced に移動し、Migrations を検索します。
  2. トグルを使用して Custom claims must be namespaced を無効にします。