Prácticas recomendadas para ejecutar scripts de Action de bases de datos personalizadas
Conozca las prácticas recomendadas para ejecutar scripts de Action de bases de datos personalizadas.
Un tipo de conexión de base de datos personalizada le permite configurar scripts de Action, que contienen código personalizado que Auth0 usa para interactuar con su almacén de identidades heredado. Los scripts de Action son funciones de JavaScript con nombre que aceptan un conjunto predefinido de parámetros.
Los scripts de Action se ejecutan dentro de un contenedor de Webtask individual con un límite de ejecución de aproximadamente 20 segundos. Una vez ejecutadas las funciones, el contenedor se recicla.Cuando un contenedor se recicla, finaliza las operaciones pendientes del script de Action. Esto puede hacer que se devuelva un error y que el objeto global se restablezca. Para obtener más información sobre el objeto global, consulte Prácticas recomendadas del entorno de scripts de Action de base de datos personalizada.
Las características asíncronas de JavaScript, incluidos los objetos Promise y las funciones async, son compatibles con los scripts de Action.Puede usar características asíncronas para ejecutar operaciones sin bloqueo dentro de un script de Action, pero asegúrese de que estas operaciones no superen el límite de ejecución del contenedor de Webtask. Cuando el contenedor de Webtask se recicla, finaliza cualquier operación pendiente, lo que puede provocar un comportamiento inesperado o un error.Si realiza una llamada a un servicio externo o a una API dentro de su script de Action, configure un tiempo de espera razonable para la función y devuelva un error si no se puede acceder al servicio externo o a la API.
Este ejemplo usa el método fetch integrado de JavaScript, que obtiene un recurso a través de la red y luego devuelve un objeto Promise; está escrito con cadenas de promesas.
Este ejemplo usa el método fetch integrado de JavaScript, que obtiene un recurso de la red y luego devuelve un objeto Promise, y está escrito con funciones asíncronas.
La función callback indica que la operación del script de Action ha finalizado y debe invocarse exactamente una vez. Un script de Action debe finalizar inmediatamente después de llamar a la función callback, preferiblemente usando explícitamente la instrucción return.
Si la función callback se invoca más de una vez, puede dar lugar a resultados inesperados o errores.Si no se invoca la función callback en ningún momento, la ejecución del script de Action se bloqueará y se devolverá un error cuando se recicle el contenedor de Webtask.
Si un script de Action utiliza procesamiento asíncrono, la función callback debe invocarse una vez que hayan finalizado todas las operaciones asíncronas.
El tamaño total de la implementación de cualquier script de Action no debe superar los 100 kB. Esta limitación de tamaño no incluye los módulos npm importados. Para obtener más información sobre los módulos npm, consulte Prácticas recomendadas para el entorno de scripts de Action de base de datos personalizada.Cuanto mayor sea el tamaño de un script, mayor será la latencia introducida por el proceso de empaquetado y transporte que utiliza la plataforma Webtask. El tamaño afecta al rendimiento del sistema.
Los scripts de Action pueden implementarse como funciones anónimas, pero no se recomienda. Las funciones anónimas dificultan la depuración del script de Action y la interpretación de la pila de llamadas que se genera como resultado de cualquier error excepcional. Para obtener más información sobre las funciones anónimas, consulta IIFE on MDN Web Docs.
Asegúrese de proteger todas las comunicaciones entre Auth0 y su almacén de identidades heredado. Si su almacén de identidades heredado aún no tiene una API implementada, es muy recomendable que la implemente.Si su almacén de identidades heredado tiene una API disponible, puede registrar la API en Auth0 y crear una Action para restringir el acceso de los usuarios finales.Si su almacén de identidades heredado no tiene una API disponible —y no es viable implementar una—, igualmente puede comunicarse directamente con su base de datos. Asegúrese de agregar las direcciones IP de Auth0 a la lista de permitidos de su firewall para permitir el tráfico entrante desde Auth0.
Si el objeto user devuelve las propiedades access_token y refresh_token, Auth0 las trata de forma diferente a otros tipos de información de usuario. Auth0 las almacena en la propiedad identities del objeto user: