メタデータのフィールド名とデータ型
Auth0は、特定の種類の情報を保管するために使用されるメタデータを3種類に区別しています。
メタデータタイプ | フィールド名 | 説明 |
---|---|---|
User Information(ユーザー情報) | user_metadata |
ユーザーの主要な機能性に影響しない設定などのユーザー属性を保管します。このデータは、Management APIを使ってフォームを作成すると、ログイン済みのユーザーが編集できるため、安全なデータ保管場所としては使用できません。 |
Access Information(アクセス情報) | app_metadata |
権限、Auth0プラン、外部IDなど、ユーザーの機能へのアクセスに影響する情報を保管します。このデータはユーザーが編集できないため、このフィールドに保管できる情報には制約があります。 |
Application Information(アプリケーション情報) | Client オブジェクトのclient_metadata 、ルールのcontext.clientMetadata 、ログイン後アクションのevent.client.metadata 。 |
アプリケーション(OIDC OAuth2の用語ではクライアント)に関する情報を保管します。たとえば、アプリケーションのホームページのURL(Auth0がアプリケーション設定で指定しない任意の値)です。 |
メタデータフィールド名
使用できる文字
フィールド名に.
(ドット)または$
(ドル記号)の文字を含めてはいけません。
たとえば、以下は許可されません。
{
"preference.color": "pink"
}
Was this helpful?
しかし、以下のように拡張することはできます。
{
"preference": {
"color": "pink"
}
}
Was this helpful?
動的フィールド名
フィールド名は静的である必要があります。動的フィールド名は、インデックス作成の効率を低下させ、検索クエリのパフォーマンスを劣化させます。静的スキーマは、検索、操作、作業が容易です。
以下のようにするのではなく、
{
"participants": [
"Alice": {
"role": "sender"
},
"Bob": {
"role": "receiver"
}
]
}
Was this helpful?
このようにします。
{
"participants": [
{
"name": "Alice",
"role": "sender"
},
{
"name" : "Bob",
"role": "receiver"
}
]
}
Was this helpful?
名前の衝突
app_metadata
フィールドとルートプロファイルフィールドに同一の名前を使用することは避けてください。app_metadata
フィールドは、ルールとアクションの両方でルートプロファイルにマージされるため、ルートプロファイルフィールドが上書きされる可能性があります。
たとえば、ユーザーのルートプロファイルに(SAML IDプロバイダーから返される)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"
]
}
}
Was this helpful?
ルールからユーザーオブジェクト上でgroups
フィールドを読み込む際、以下を返します:["internal-group-1", "internal-group-2"]
メタデータのデータ型
メタデータフィールドはすべてのJSON互換データ型をサポートします。
文字列
数値
配列
オブジェクト
ユーザー間でデータ型を一貫して維持するようにしてください。たとえば、あるユーザー値を文字列として保管する(user.user_metadata.age = "23"
)すると同時に、別のユーザー値を数値として保存する(user.user_metadata.age = 23
)と、データを取得する際に問題が発生する可能性があります。
制限と制約
レート制限
ログイン時にルールまたはアクションを使用してメタデータを更新すると、テナントのレート制限が適用されます。詳細については、「Management APIエンドポイントレート制限」をお読みください。
サイズ制限とストレージ
ユーザー検索エンドポイントでインデックス作成、クエリ、返却できるユーザーデータには1ユーザーあたり1MBの制限があります。ユーザープロファイルが1MBより大きい場合、
app_metadata
およびuser_metadata
内で256文字より多いすべての属性値は、検索できず、検索結果に返されません。ユーザープロファイルがこれらの大きな値を省いてもなお1MBを超える場合、そのユーザーのapp_metadata
およびuser_metadata
属性は検索不可または返却不可となります。Auth0は、ユーザープロファイルが省略後もなお1MBを超える場合をwum
イベントコードの下でキャプチャし、ログに記録します。オーバーサイズのユーザープロファイルについては、すべてのメタデータ属性を取得するために、ユーザー取得エンドポイントを使用する必要があります。user_metadata
フィールドをAuthentication APIのサインアップエンドポイントを使って設定する際には、それぞれの値が500文字を超えない文字列フィールドを最大10個含めることができます。カスタムサインアッププロセスでのメタデータの扱いの例については、「カスタムサインアップ」をお読みください。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