メインコンテンツへスキップ
Auth0は、特定の種類の情報を保管するために使用されるメタデータを3種類に区別しています。
Auth0のメタデータはセキュリティ保護されたデータストアではないため、機密情報の保管に使用されるべきではありません。これには社会保障番号やクレジットカード番号など、高リスクの個人情報が含まれます。Auth0の顧客はメタデータに保管されているデータを評価して、IDとアクセスの管理に必要なものだけを保管することを強くお勧めします。
メタデータタイプフィールド名説明
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"
}
しかし、以下のように拡張することはできます。
{
    "preference": { 
        "color": "pink" 
    }
}

動的フィールド名

フィールド名は静的である必要があります。動的フィールド名は、インデックス作成の効率を低下させ、検索クエリのパフォーマンスを劣化させます。静的スキーマは、検索、操作、作業が容易です。 以下のようにするのではなく、
{
    "participants": [
        "Alice": {
            "role": "sender"
         },
        "Bob": {
            "role": "receiver"
        }
    ]
}
このようにします。
{
    "participants": [
        {
            "name": "Alice",
            "role": "sender"
        },
        {
            "name" : "Bob",
            "role": "receiver"
        }
    ]
}

名前の衝突

app_metadataフィールドとルートプロファイルフィールドに同一の名前を使用することは避けてください。app_metadataフィールドは、ルールとアクションの両方でルートプロファイルにマージされるため、ルートプロファイルフィールドが上書きされる可能性があります。 たとえば、ユーザーのルートプロファイルに( 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"
        ]
    }
}
ルールからユーザーオブジェクト上でgroupsフィールドを読み込む際、以下を返します:["internal-group-1", "internal-group-2"]

メタデータのデータ型

メタデータフィールドはすべてのJSON互換データ型をサポートします。
  • 文字列
  • 数値
  • 配列
  • オブジェクト
ユーザー間でデータ型を一貫して維持するようにしてください。たとえば、あるユーザー値を文字列として保管する(user.user_metadata.age = "23")すると同時に、別のユーザー値を数値として保存する(user.user_metadata.age = 23)と、データを取得する際に問題が発生する可能性があります。

制限と制約

レート制限

ログイン時にルールまたはアクションを使用してメタデータを更新すると、テナントのレート制限が適用されます。詳細については、「Management APIエンドポイントレート制限」をお読みください。
メタデータにはユーザー認証に関連するデータだけを保管します。Auth0のストレージ・検索機能は、検索・更新の頻度があまり高くないユースケースを想定して設計されています。ユーザーのプロファイル関連の詳細なデータを維持したい場合は、外部システムで行ってください。そのシステムで生成されるユーザーの識別子を、Auth0にメタデータフィールドとして保存できます。

サイズ制限とストレージ

  • ユーザー検索エンドポイントでインデックス作成、クエリ、返却できるユーザーデータには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

もっと詳しく

I