/userinfoエンドポイントの応答にも追加されます。クレームのタイプについては、「JSON Web Tokenクレーム」をお読みください。
例
これまでAuth0では、名前空間のあるクレームしかアクセストークンとIDトークンに許可されていませんでした。カスタムクレームへの本移行により、今後は名前空間のないクレームをAuth0のAuthentication APIのアクセストークン、IDトークン、および/userinfoエンドポイントで使用できます。
影響を受けるフロー
Auth0がサポートするすべての Connect(OIDC)フローがこの移行の影響を受けます。フローの一覧は、「認証および認可のフロー」でお読みください。 次の機能も影響を受けます。 次の機能は、Auth0 Rulesおよび属性マッピングと併用する場合にのみ影響を受けます。制限
トークンサイズの上限
カスタムクレームのペイロードを最大100KBに制限します。認証トランザクションがエラーで失敗しないよう、ペイロードがこの上限を超えないようにすることが大切です。拡張コード(Rules、HooksまたはActions)の使用を確認することを推奨します。特に、外部APIからの大きなペイロードを確認してください。 エラーを防ぐため、Auth0ではアプリケーションの操作に必要な最小限のトークンペイロードを使用することを推奨しています。カスタムクレーム値を設定する前に、重要でないプロパティをすべて削除しなければならない場合があります。この制限は、全カスタムクレームのペイロードサイズの合計に適用されます。それには、名前空間があるパブリックのカスタムクレームか名前空間のないプライベートのカスタムクレームかにかかわらず、カスタムクレーム名とその関連値が含まれます。
例
予約済みのクレーム
Auth0は、OIDC標準やOAuth2標準で使用されるクレーム、または内部で使用するクレームのカスタマイズを制限します。そのため、これらのクレームを変更する試みはすべて無視されます。トランザクションは失敗しませんが、当該クレームがトークンに追加されることはありません。Auth0では、パブリックの、名前空間のあるクレームの使用を推奨しています。acractactiveamrat_hashathattestaudauth_timeauthorization_detailsazpc_hashclient_idcnfctydestentitlementseventsexpgroupsgtyhtmhtuiatinternalServiceissjcardjkujtijwejwkkidmay_actmkynbfnonceobject_idorg_idorg_nameorigorigidpermissionsrolesrphs_hashsidsip_callidsip_cseq_numsip_datesip_from_tagsip_via_branchsubsub_jwktoetxntypuuidvotvtmx5t#S256
例
トークンオーディエンスの制限
Auth0では、オーディエンスがAuth0 APIであるアクセストークンでの、プライベートで名前空間のないカスタムクレームの作成を制限します。オーディエンスがAuth0 APIであるアクセストークンでプライベートの名前空間のないカスタムクレームを設定する試みは、すべて無視されます。トランザクションは失敗しませんが、当該クレームがトークンに追加されることはありません。Auth0では、Auth0のAPIによって使用されるトークンにカスタムクレームを設定しないことを推奨しています。- IDトークンはこの制約に影響されません。
- パブリック名前空間のカスタムクレームは、この制限に影響されません。
https://YOUR_TENANT.auth0.com/apiまたはhttps://YOUR_TENANT.auth0app.com/apihttps://YOUR_TENANT.auth0.com/api/v2またはhttps://YOUR_TENANT.auth0app.com/api/v2https://YOUR_TENANT.auth0.com/mfaまたはhttps://YOUR_TENANT.auth0app.com/mfa
/userinfoオーディエンスです。プライベートで名前空間のないカスタムクレームは、次のオーディエンスで許可されています。
https://YOUR_TENANT.auth0.com/userinfohttps://YOUR_TENANT.auth0app.com/userinfo
例
Auth0とWebtaskの名前空間の制約
Auth0では、Auth0ドメインを名前空間識別子として使用した、名前空間ありのカスタムクレームの作成を制限します。Auth0ドメインは以下の通りです。- auth0.com
- webtask.io
- webtask.run
この移行の前に、Auth0ドメイン識別子を使って名前空間のあるカスタムクレームを設定すると、クレームが
/userinfo応答に含まれてしまいます。この動作は、移行後には解消され、該当するカスタムクレームが完全に無視されます。OIDCユーザープロファイルクレーム
Auth0では、OIDCユーザープロファイルクレームをアクセストークンに追加できるようになりました。 この移行前は、OIDCユーザープロファイルクレームをアクセストークンに追加する試みは、サイレントに無視されていました。しかし、更新後の動作では、アクセストークンにこれらのOIDCユーザープロファイルクレームを含むことができます。アクセストークンにOIDCユーザープロファイルクレームを追加した場合、IDトークンと同様のスコープの制限が適用されます。たとえば、アクセストークンに
emailクレームを追加するには、emailを含むscopeを使ってフローをトリガーしなければなりません。addressbirthdateemailemail_verifiedfamily_namegendergiven_namelocalemiddle_namenamenicknamephone_numberphone_number_verifiedpicturepreferred_usernameprofileupdated_atwebsitezoneinfo
例
Auth0 Rulesを使用したSAML2アドオンおよびWebサービスフェデレーション(WS-Fed)プロトコルの属性マッピング
Auth0 Rulesを使用してユーザーオブジェクトに変更を加える場合と同様に、app_metadataまたはuser_metadataの移行前のクレームもまた、クレームがcontext.idTokenオブジェクトに設定され、名前が衝突するときに、コンテンツを結合します。オブジェクトプロパティの詳細については、「Rulesのユーザーオブジェクトプロパティ」をお読みください。
ただし、カスタムクレームを使用する場合、Auth0はcontext.idTokenオブジェクトに設定されたクレームを優先します。
この変更は、context.id_token経由でapp_metadataおよびuser_metadataを設定する(それらにオブジェクトを割り当てる)と同時に、アドオンまたはWebサービスフェデレーション()プロトコルの属性マッピングでこれらのフィールドを使用するAuth0 Rulesに影響を与えます。
例1:Auth0は、context.idToken.app_metadataが空のオブジェクトで設定されている場合に属性マッピングを無視します。
context.id_token内のapp_metadataのバージョンが優先されます。
プライベートで名前空間のないクレームをトークンに追加する
カスタムクレームは、カスタムクレームのベータプログラム加入者に対しても同じように動作します。この機能はすでに有効化されています。
例
/userinfoへのプライベートで名前空間のないクレーム
Auth0では、IDトークンに設定されている場合、/userinfo応答でプライベートの名前空間のないカスタムクレームを返すようになりました。例
アクション
テナントログを確認する
まず、テナントログで廃止の通知を確認して、テナントが移行の影響を受けるかどうかを判断します。- [Auth0 Dashboard]>[Monitoring(モニタリング)]>[Logs(ログ)]に移動します。
type: depnote AND description:*Custom*claims*のログを検索します。
例
以下は、拡張コードがトリガーされるたびに生成される廃止ログの例です。SAML2アドオンとWebサービスフェデレーション(WS-Fed)プロトコルのAuth0ルールを修正する
Auth0 Rulesと属性マッピングを使用したSAML2アドオンおよびWebサービスフェデレーション(WS-Fed)プロトコルを使って、context.idTokenオブジェクトにapp_metadataまたはuser_metadataクレームを設定する場合、構成を更新して、Auth0がこれらのオブジェクト間の衝突するクレーム名を評価する方法を調整する必要があります。修正方法にはいくつかあります。
-
Auth0ルールのコードが常に
context.id_tokenに設定されたオブジェクトのコンテンツを優先するようにします。 -
SAML2アドオンまたはWebサービスフェデレーション(WS-Fed)プロトコルの属性マッピングを使用する場合は、
app_metadataまたはuser_metadataクレームをcontext.idTokenオブジェクトに設定しないようにします。可能な場合は、これらのクレームを名前空間のあるクレームに置き換えます。 -
プロトコルが
samlpまたはwsfedの場合、現在のプロトコルまたは現在のクライアントで条件を使用して、app_metadataまたはuser_metadataを設定するステートメントを除外します。
レガシーの動作を無効にする
レガシーの動作を無効化する前に、変更のリストを参照して、アプリケーションと統合に互換性があることを確認してください。
- [Auth0 Dashboard]>[Tenant Settings(テナント設定)]>[Advanced(詳細設定)]に移動して、[Migrations(移行)] を探します。
- トグルで [Custom claims must be namespaced(カスタムクレームは名前空間ありでなければならない)] を無効にします。