Conceptos básicos de Actions
- Use la menor cantidad posible de solicitudes HTTP y establezca un tiempo de espera razonable (menos de 10 segundos) para evitar que se acumulen solicitudes durante el inicio de sesión.
-
Use metadatos de la aplicación para filtrar aplicaciones específicas y determinar si debe ejecutarse una Action.
- Ejemplo: valores específicos de la aplicación o valores de agrupación de aplicaciones para variar parcial o totalmente la ejecución de la Action.
-
Use
user_metadata/app_metadatapara conservar datos personalizados en el perfil del usuario.- Ejemplo: preferencias del usuario o valores de estado.
-
Use metadatos de transacción para compartir datos entre triggers de post-login durante la misma ejecución.
- Ejemplo: valores recuperados de servicios externos o calculados que deben reutilizarse en Actions posteriores y que están relacionados con la ejecución actual.
-
Use la caché para datos que deban compartirse entre Actions de distintas ejecuciones.
- Ejemplo: valores recuperados de servicios externos o calculados que deben reutilizarse en Actions y que no están relacionados con el usuario ni con la ejecución actual específica.
- Asegúrese de que las Actions que proporcionan verificación o activan no puedan omitirse de forma accidental o maliciosa.
-
Las Actions nunca deben generar un error de forma intencionada; si los procesos se detienen debido a un error o una condición, use el método
apiadecuado, comoapi.access.deny(). -
Use
event.request.hostnamepara el dominio utilizado en las llamadas a la Authentication API; puede ser el dominio predeterminado del inquilino de Auth0 o un dominio personalizado.
Módulos de Actions
- Use módulos de Actions cuando necesite reutilizar funciones en distintas Actions y evitar la redundancia de código.
- Siempre que sea posible, ahorre tiempo de instanciación de objetos implementando el patrón Singleton para reutilizar instancias de objetos en el módulo de Actions.
- Siga las directrices aplicables de este documento en materia de codificación, seguridad, registro, dependencias y datos de usuario.
- Al usar un módulo de Actions desde una Action, tenga siempre presente la versión del módulo que se está utilizando.
Cuando publica una nueva versión de un módulo de Actions, Auth0 no actualiza automáticamente la versión a la que hacen referencia las Actions, lo que evita posibles fallos si la actualización no es compatible con la Action.
Conceptos básicos de programación
- Compruebe la igualdad estricta
===en todos los datos entrantes o almacenados. - Use una instrucción
returncuando el proceso de la Action deba detenerse. - Ejecute un linter, como ESLint, y un analizador, como Semgrep, para mejorar la calidad del código y detectar problemas automáticamente.
Conceptos básicos de seguridad
- No escriba secretos ni artefactos de código confidenciales en texto sin formato como parte de su código de Actions. En su lugar, use el Secrets Manager o integre su propio gestor dentro del código de Actions.
- No transmita información de identificación personal (PII) sin cifrar y visible, por ejemplo, en URL o mensajes de error.
- Use siempre URL con HTTPS para las redirecciones y las llamadas a la API.
- Incluya las direcciones IP en una lista de permitidos cuando sea posible.
- Preste atención a los datos entrantes que puedan ser manipulados (parámetros de URL, agente de usuario, etc.).
Programación defensiva
- Detecte los errores y trátelos según sea necesario.
- Use cláusulas de guarda y salga anticipadamente si el procesamiento de la Action no debe continuar.
Registro
- Nunca registres datos confidenciales, secretos ni PII.
- No superes el máximo de 256 caracteres registrados por Action.
Dependencias
- Utilice paquetes confiables y con mantenimiento activo.
- Compruebe si hay CVE pendientes con la función de auditoría de
npmo con un verificador automatizado de dependencias conectado a un repositorio. - Utilice la versión más reciente de un paquete cuando sea posible.
Datos de usuario
- Compruebe si un correo electrónico está verificado con
event.user.email_verifiedsi se utiliza en un contexto sensible o de alta seguridad. - Las distintas conexiones proporcionan datos de perfil de usuario diferentes; el único campo del perfil de usuario garantizado es
user_id.
Actions de redirección en el flujo de inicio de sesión
-
El token que devuelve
api.redirect.encodeTokenestá firmado, pero no cifrado, por lo que no se deben incluir datos confidenciales ni información de identificación personal (PII) en la carga útil. -
El flujo de inicio de sesión se ejecuta después de que el inicio de sesión se complete correctamente, lo que incluye:
- SSO (no se muestra ningún formulario de inicio de sesión)
- autenticación silenciosa (comprobación de una sesión mediante
prompt=noneen la URL de autorización) - intercambio de Token de actualización (sin interacción del usuario)
- concesiones de contraseña RO (las credenciales se recopilan desde una aplicación y se intercambian con el endpoint de token)
- Las Actions que redirigen deben tener en cuenta los casos anteriores y denegar el acceso si se requiere interacción, o permitir intencionadamente la omisión, con lo que la responsabilidad recae en la aplicación que solicita el inicio de sesión.