Auth0では、特定の種類の情報を保存するために使用されるメタデータを、3種類に区別しています。
Auth0のメタデータは安全なデータストアではないため、高リスクのシークレットや、社会保障番号やクレジットカード番号などの個人を特定できる情報 (PII) のような機微な情報を保存しないでください。Auth0をご利用のお客様には、メタデータに保存するデータを評価し、アイデンティティおよびアクセス管理の目的に必要なものだけを保存することを強く推奨します。
| メタデータの種類 | フィールド名 | 説明 |
|---|
| ユーザー情報 | user_metadata | 設定など、ユーザーの中核的な機能に影響しないユーザー属性を保存します。Management APIを使用してフォームを構築した場合、このデータはログインしているユーザーが編集できます。そのため、安全なデータストアとして使用すべきではありません。 |
| アクセス情報 | app_metadata | 権限、Auth0プラン、外部IDなど、ユーザーの機能へのアクセスに影響する可能性がある情報を保存します。このデータはユーザーが編集できません。また、このフィールドに保存できる内容には制限があります。 |
| アプリケーション情報 | client_metadata in the Client object, context.clientMetadata in Rules, and event.client.metadata in post-login Actions. | アプリケーションに関する情報 (OIDC OAuth2の用語では クライアント) を保存します。たとえば、アプリケーションのホームページのURLなどです (Auth0がアプリケーション設定で設定しない値) 。 |
フィールド名に . (ドット) または $ (ドル記号) を含めることはできません。
たとえば、次のようなものは使用できません。
{
"preference.color": "pink"
}
ただし、次のように展開することもできます。
{
"preference": {
"color": "pink"
}
}
フィールド名は固定にする必要があります。動的なフィールド名を使うと、インデックス作成の効率が低下し、検索クエリのパフォーマンスも悪化します。スキーマが固定されていると、検索、操作、管理がしやすくなります。
代わりに、次のようにします。
{
"participants": [
"Alice": {
"role": "sender"
},
"Bob": {
"role": "receiver"
}
]
}
次のようにします:
{
"participants": [
{
"name": "Alice",
"role": "sender"
},
{
"name" : "Bob",
"role": "receiver"
}
]
}
app_metadata フィールドとルートプロファイルのフィールドに同じ名前を使用しないでください。app_metadata フィールドは Rules と Actions の両方でルートプロファイルにマージされるため、ルートプロファイルのフィールドが上書きされる可能性があります。
たとえば、ユーザーのルートプロファイルに groups フィールドがあり ( から返される) 、さらに app_metadata 内にも groups フィールドがある場合、ユーザープロファイルは次のようになります。
{
"user_id": "samlp|example-samlp-connection|username@domain.com",
"groups": [
"external-group-1",
"external-group-2"
],
"app_metadata": {
"groups": [
"internal-group-1",
"internal-group-2"
]
}
}
Rule から User object の groups フィールドを読み取ると、["internal-group-1", "internal-group-2"] が返されます。
メタデータフィールドでは、すべてのJSON互換データ型をサポートしています。
ユーザー間でデータ型に一貫性を持たせるようにしてください。たとえば、あるユーザーでは値を文字列として保存し (user.user_metadata.age = "23")、別のユーザーでは数値として保存している場合 (user.user_metadata.age = 23)、データの取得時に問題が発生する可能性があります。
Rules または Actions を使用してログイン時にメタデータを更新する場合は、テナントのレート制限の対象となります。詳細については、Management API Endpoint Rate Limits を参照してください。
メタデータには、ユーザー認証に関するデータのみを保存してください。Auth0 の保存機能と検索機能は、高頻度の検索や更新を必要としないユースケースを想定して設計されています。ユーザーに関する詳細なユーザープロファイルデータを管理する必要がある場合は、外部システムで管理してください。そのシステム上のユーザー識別子は、Auth0 のメタデータフィールドとして保存できます。
- インデックス化、クエリ、ユーザー検索エンドポイント からの返却の対象となるユーザーデータには、ユーザーごとに 1 MB の上限があります。ユーザープロフィールが 1 MB を超える場合、
app_metadata と user_metadata 内で 256 文字を超える属性値は検索できず、検索結果にも返されません。これらの大きな値を除外した後でもユーザープロフィールが 1 MB を超える場合、そのユーザーでは app_metadata と user_metadata のすべての属性が検索対象にも返却対象にもなりません。Auth0 は、大きな値を除外した後でもユーザープロフィールが 1 MB を超えているケースを、wum イベントコード で記録します。サイズ超過したユーザープロフィールのすべてのメタデータ属性を取得するには、ユーザー取得エンドポイント を使用する必要があります。
- Auth0 Authentication API の Signup エンドポイント を使用して
user_metadata フィールドを設定する場合、各値が 500 文字以下の文字列フィールドを最大 10 個まで含めることができます。カスタムサインアッププロセスでメタデータを扱う例については、Custom Signup を参照してください。
client_metadata フィールドには最大 10 個のキーを設定できます。キーと値はそれぞれ最大 255 文字までで、UTF-8 の特殊文字は使用できません。
app_metadata フィールドには、以下のプロパティを含めることはできません。
__tenant
_id
blocked
clientID
created_at
email_verified
email
globalClientID
global_client_id
identities
lastIP
lastLogin
loginsCount
metadata
multifactor_last_modified
multifactor
updated_at
user_id