Auth0 recomienda usar, siempre que sea posible, el inicio de sesión federado habitual y listo para usar. Al permitirle establecer el usuario para la transacción, Custom Token Exchange le ofrece más flexibilidad, a cambio de asumir la responsabilidad adicional de validar y gestionar la transacción de forma segura.
Casos de uso
Caso de uso: Migración sin fricciones a Auth0

- La app móvil realiza una solicitud a Auth0 para intercambiar el Token de actualización heredado y lo establece como token de sujeto.
- Se ejecuta la Action correspondiente del perfil de intercambio de tokens personalizado. Valida el Token de actualización con el IdP heredado y obtiene el ID de usuario externo del perfil del usuario. Después aplica la directiva de autorización requerida y, por último, asigna el usuario.
- Auth0 responde con un token de acceso, un ID token y un Token de actualización de Auth0.
- La app móvil ya puede usar las API del cliente con tokens de Auth0 sin que el usuario tenga que volver a autenticarse.
- No queremos crear el usuario.
- No queremos actualizar el perfil del usuario.
Caso de uso: Reutilizar un proveedor de autenticación externo

- La aplicación de página única obtiene el token de ID del IdP externo una vez que el usuario se autentica.
- Luego solicita el intercambio del token de ID y lo establece como token de sujeto.
- Se ejecuta la Action del perfil de Custom Token Exchange correspondiente. Valida el token de ID y obtiene de él el id del usuario y otros atributos del perfil. Luego aplica la política de autorización requerida y, por último, establece el usuario.
- Auth0 responde con un token de acceso de Auth0, un token de ID y un token de actualización.
- El código JavaScript que se ejecuta en la SPA ahora puede usar las API del cliente con tokens de Auth0 sin que el usuario tenga que volver a autenticarse.
- Usamos el id de usuario del IdP externo para establecer el usuario en la conexión correspondiente.
- Queremos crear el usuario si todavía no existe.
- No queremos reemplazar el perfil del usuario si se obtiene un conjunto más completo de atributos mediante inicio de sesión federado, en caso de que el usuario ya exista.
- No queremos verificar el correo electrónico cuando se crean usuarios.
Caso de uso: Obtener tokens de Auth0 para otra audiencia

- La aplicación envía la solicitud con el token de acceso inicial a la API A.
- El backend de la API A valida el token de acceso y solicita el intercambio estableciéndolo como token de sujeto para un nuevo token de acceso destinado a consumir la API B como audiencia.
- Se ejecuta la Action del perfil de Custom Token Exchange correspondiente. Valida el token de acceso y obtiene del token el ID del usuario de Auth0. Luego aplica la política de autorización requerida y, por último, establece el usuario.
- Auth0 responde con un token de acceso de Auth0 para consumir la audiencia de la API B.
- El backend de la API A llama a la API B con el nuevo token de acceso, que sigue asociado al mismo usuario.
- Usamos el ID del usuario de Auth0 para establecer el usuario, por lo que no es necesario hacerlo en el scope de ninguna conexión.
- No queremos crear ni actualizar el usuario.
Caso de uso: Realizar MFA durante Custom Token Exchange
api.multifactor.enable() para activar una solicitud de MFA. Esta función se describe en la documentación de la API de Post Login.
mfa_required que devuelve un token de MFA:
mfa_token devuelto, la aplicación puede llamar a la API de MFA para plantear un desafío y verificar un factor:
Primero, devuelve una lista de autenticadores:
mfa_token y oob_code (si se devuelven) para completar el proceso de verificación mediante el endpoint de token y recibir los tokens:
Caso de uso: Agente de soporte que actúa en nombre de un usuario final

actor_token en la solicitud, y un JWT firmado que identifica al usuario final se envía como subject_token. Cuando actor_token_type se establece en urn:ietf:params:oauth:token-type:id_token, Auth0 valida automáticamente el token (firma, vencimiento y emisor) y completa event.transaction.actor_token_user con el perfil del agente. Esto elimina la necesidad de usar código de validación personalizado para el token del actor.
No es obligatorio usar un token de ID de Auth0 como
actor_token. Cuando actor_token_type es un valor personalizado, la Action debe validar el token del actor mediante código personalizado, de forma similar a como se validan los tokens de sujeto. El llenado automático de event.transaction.actor_token_user solo se aplica a los tokens de ID de Auth0.- La herramienta de soporte autentica al agente con Auth0 y obtiene el token de ID del agente.
- La herramienta de soporte llama al endpoint
/oauth/tokende Auth0 mediante una solicitud de Custom Token Exchange, que incluye un JWT firmado con el identificador del usuario final comosubject_tokeny el token de ID del agente comoactor_token. - La Action de Custom Token Exchange valida el token de sujeto, verifica que el actor tenga permiso para actuar en nombre del usuario final y llama a
api.authentication.setActor(). - Auth0 emite tokens con el claim
actque identifica al agente de soporte. - El agente de soporte llama a la API en nombre del usuario final. Las API pueden inspeccionar el claim
actpara aplicar políticas de autorización específicas del acceso delegado, como restringir operaciones de escritura o registrar la actividad con fines de auditoría.
act:
- Implemente la lógica de autorización dentro de su Action de Custom Token Exchange para verificar que el actor esté autorizado a acceder a la cuenta de usuario específica. Por ejemplo, puede implementar decisiones de autorización para permitir que solo determinados actores realicen acceso delegado, o comprobar que el usuario de destino tenga un ticket de soporte activo para protegerse frente al acceso arbitrario a cuentas de usuario.
- Valide los alcances solicitados para garantizar que solo se emita el conjunto mínimo de alcances necesarios para la autorización delegada. También puede asegurarse de que determinadas operaciones sensibles nunca puedan realizarse en el contexto de la autorización delegada.
-
Asegúrese de que sus API utilicen el contexto de delegación en el claim
actdel token de acceso. Debe mantener registros de auditoría en sus API de las acciones realizadas por un actor delegado y asegurarse de poder auditar con claridad qué actor realizó operaciones en nombre del usuario. -
Con fines de auditoría, puede usar los detalles del actor en los registros del inquilino de Auth0. Las transacciones correctas de Custom Token Exchange (eventos de registro
secte) incluyen la propiedadactorconsuby cualquier informaciónactoranidada.
Auth0 no notifica al usuario final cuando se emite un token de autorización delegada en su nombre. Si su caso de uso requiere notificar al usuario o contar con su consentimiento explícito antes de que se produzca el acceso delegado, considere usar Client Initiated Backchannel Authentication (CIBA) para enviar una solicitud de consentimiento al dispositivo del usuario final antes de realizar el intercambio de tokens. Para necesidades de notificación más simples, puede implementar la lógica de notificación dentro de su Action de Custom Token Exchange, una Action de Post-Login o en sus servicios posteriores.
Ejemplos de código
Es su responsabilidad garantizar que los subject tokens estén protegidos con un algoritmo sólido y con claves o secretos con suficiente entropía.
Validación de JWT firmados con claves asimétricas
- Use los métodos
api.cache ()de Actions para evitar tener que obtener las claves de firma en cada transacción. - Siga las prácticas recomendadas de RFC8725
- Use algoritmos RS*, PS*, ES* o Ed25519
- No use ni acepte el algoritmo none
- Use RSA con una longitud mínima de 2048 bits.
Validar JWT firmados con claves simétricas
- Utilice Actions Secrets para almacenar de forma segura sus secretos simétricos.
- Siga las prácticas recomendadas de RFC8725.
- Utilice algoritmos seguros como HS256, junto con secretos aleatorios de alta entropía (por ejemplo, de al menos 256 bits de longitud).