Saltar al contenido principal
Auth0 distingue entre tres tipos de metadatos que se usan para almacenar tipos específicos de información.
Los metadatos de Auth0 no son un almacén de datos seguro y no deben usarse para almacenar información confidencial, como secretos de alto riesgo e información de identificación personal (PII), por ejemplo números de seguro social o de tarjetas de crédito. Se recomienda encarecidamente a los clientes de Auth0 que evalúen los datos almacenados en los metadatos y guarden solo lo necesario para fines de gestión de identidades y accesos.
Tipo de metadatosNombre del campoDescripción
Información del usuariouser_metadataAlmacena atributos del usuario, como preferencias, que no afectan la funcionalidad principal del usuario. Estos datos pueden ser editados por usuarios que hayan iniciado sesión si crea un formulario con la Management API y no deben usarse como un almacén de datos seguro.
Información de accesoapp_metadataAlmacena información como permisos, el plan de Auth0 e identificadores externos que pueden afectar el acceso del usuario a las funciones. Estos datos no pueden ser editados por los usuarios y existen restricciones sobre lo que se puede almacenar en este campo.
Información de la aplicaciónclient_metadata en el objeto Client, context.clientMetadata en Rules y event.client.metadata en Actions de post-login.Almacena información sobre una aplicación (o cliente en la terminología de OIDC OAuth2). Por ejemplo, la URL de la página principal de la aplicación (cualquier valor que Auth0 no establezca en la configuración de la aplicación).

Nombres de los campos de metadatos

Caracteres aceptados

Los nombres de los campos no deben contener los caracteres . (punto) ni $ (signo de dólar). Por ejemplo, esto no está permitido:
{
  "preference.color": "pink"
}
Pero puedes ampliarlo así:
{
    "preference": { 
        "color": "pink" 
    }
}

Nombres de campo dinámicos

Los nombres de campo deben ser estáticos. Los nombres de campo dinámicos reducen la eficiencia de la indexación y degradan el rendimiento de las consultas de búsqueda. Un esquema estático es más fácil de buscar, manipular y usar. En lugar de hacer esto:
{
    "participants": [
        "Alice": {
            "role": "sender"
         },
        "Bob": {
            "role": "receiver"
        }
    ]
}
Haz esto:
{
    "participants": [
        {
            "name": "Alice",
            "role": "sender"
        },
        {
            "name" : "Bob",
            "role": "receiver"
        }
    ]
}

Colisión de nombres

Evita usar el mismo nombre para los campos de app_metadata y los campos raíz del perfil. El campo app_metadata se fusiona con el perfil raíz tanto en Rules como en Actions, lo que puede sobrescribir campos del perfil raíz. Por ejemplo, si un usuario tiene un campo groups en su perfil raíz (devuelto por un ) y un campo groups dentro de app_metadata, su perfil podría verse así:
{
    "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"
        ]
    }
}
Al leer el campo groups del objeto de usuario en una Rule, se devolverá: ["internal-group-1", "internal-group-2"].

Tipos de datos de los metadatos

Los campos de metadatos admiten todos los tipos de datos compatibles con JSON:
  • Cadena
  • Número
  • Array
  • Objeto
Asegúrese de mantener la coherencia de los tipos de datos entre los usuarios. Por ejemplo, si almacena un valor como una cadena para un usuario (user.user_metadata.age = "23") y como un número para otro usuario (user.user_metadata.age = 23), puede haber problemas al recuperar los datos.

Limitaciones y restricciones

Límites de frecuencia

Si actualiza metadatos durante el inicio de sesión con Rules o Actions, se aplican los límites de frecuencia de su inquilino. Para obtener más información, consulte Límites de frecuencia de los endpoints de Management API.
Solo debe almacenar en los metadatos datos relacionados con la autenticación del usuario. Las capacidades de almacenamiento y búsqueda de Auth0 están diseñadas para casos de uso que no requieren búsquedas intensivas ni una alta frecuencia de actualización.Si necesita mantener datos detallados del perfil de los usuarios, debe hacerlo en un sistema externo. Puede almacenar el identificador del usuario de ese sistema como un campo de metadatos en Auth0.

Límites de tamaño y almacenamiento

  • Hay un límite de 1 MB por usuario para los datos de usuario que se pueden indexar, consultar y devolver mediante el endpoint de búsqueda de usuarios. Si un perfil de usuario supera 1 MB, los valores de los atributos de más de 256 caracteres dentro de app_metadata y user_metadata no se podrán buscar ni se devolverán en los resultados de búsqueda. Si el perfil de usuario sigue superando 1 MB después de omitir estos valores extensos, ninguno de los atributos de app_metadata y user_metadata se podrá buscar ni devolver para ese usuario. Auth0 captura y registra los casos en los que un perfil de usuario sigue superando 1 MB después de estas omisiones con el código de evento wum. Debe usarse el endpoint get user para recuperar todos los atributos de metadato de los perfiles de usuario que superan ese tamaño.
  • Cuando configure el campo user_metadata mediante el endpoint Signup de la API de autenticación de Auth0, puede incluir un máximo de 10 campos de cadena cuyos valores no superen los 500 caracteres cada uno. Para ver un ejemplo de cómo trabajar con metadato durante un proceso de registro personalizado, consulte Custom Signup.
  • El campo client_metadata puede tener un máximo de 10 claves. Tanto las claves como los valores pueden tener una longitud máxima de 255 caracteres y no pueden contener caracteres especiales UTF-8.

Restricciones

El campo app_metadata no debe contener ninguna de las siguientes propiedades:
  • __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

Más información