Para usar las funciones de autenticación backchannel iniciada por el cliente (CIBA), debes tener un plan Enterprise o un complemento adecuado. Consulta Auth0 Pricing para obtener más información.
authorization_details contiene detalles sobre la solicitud que puedes usar para personalizar una pantalla de consentimiento y mostrárselos al usuario.
Puedes autorizar usuarios con CIBA usando los siguientes canales de notificación:
- Notificaciones push móviles mediante la aplicación Auth0 Guardian y una aplicación personalizada integrada con el SDK de Auth0 Guardian.
- Notificaciones por correo electrónico, que requieren configurar una pantalla de consentimiento personalizada.
Casos de uso comunes
- Una aplicación de pagos pide al usuario que confirme una transferencia de dinero.
authorization_detailsse puede personalizar para mostrar los detalles de la transacción. - Un agente de IA muestra al usuario los detalles de una cita médica reprogramada.
authorization_detailsse puede personalizar para mostrar la nueva hora y fecha.
Cómo funciona
authorization_details al Servidor de autorización a través del endpoint /bc-authorize.
El siguiente diagrama de secuencia explica el flujo completo de autorización de usuario con CIBA de extremo a extremo:

- Requisitos previos
- Paso 1: La aplicación cliente inicia una solicitud de CIBA
- Paso 2: El inquilino de Auth0 confirma la solicitud de CIBA
- Paso 3: La aplicación cliente sondea para obtener una respuesta
- Paso 4: El dispositivo de autenticación recibe la notificación push
- Paso 5: El dispositivo de autenticación recupera los detalles del consentimiento
- Paso 6: El dispositivo de autenticación presenta al usuario los detalles del consentimiento
- Paso 7: El dispositivo de autenticación envía la respuesta del usuario a Auth0
- Paso 8: Auth0 recibe la respuesta del usuario una vez completado el flujo
- Paso 9: Auth0 devuelve el token de acceso a la aplicación cliente
Requisitos previos
- Configurar la autenticación backchannel iniciada por el cliente para su inquilino y su aplicación, incluido su canal de notificación.
- Configurar Rich Authorization Requests para su , lo que incluye registrar sus tipos de
authorization_details. - Si usa notificaciones por correo electrónico con CIBA y RAR, configure una pantalla de consentimiento personalizada.
Paso 1: La aplicación cliente inicia una solicitud de CIBA
authorization_details al endpoint /bc-authorize:
| Parámetros | Descripción |
|---|---|
tenant | Nombre del inquilino que se pasa dentro de la estructura login_hint. También puede ser un dominio personalizado. Si se usa el formato iss_sub, el nombre del inquilino se pasa dentro del claim iss.Ejemplo: login_hint={"format": "iss_sub", "iss": "https://{YOUR_DOMAIN}.auth0.com/", "sub":"{USER_ID"} |
client_id | Identificador de la aplicación cliente. |
client_secret | Método de autenticación del cliente que se usa para la autenticación del usuario con CIBA, como Secreto del cliente, Private Key JWT o autenticación mTLS. Si usa Private Key JWT o mTLS, no necesita incluir el secreto del cliente. |
scope | Debe incluir openid.El scope puede incluir opcionalmente offline_access para solicitar un Token de actualización. Sin embargo, para la autorización única de una transacción con el flujo CIBA, no se necesita un Token de actualización y no tiene ningún significado en este contexto. |
user_id | ID del usuario autorizador que se pasa dentro de la estructura login_hint. Si se usa el formato iss_sub, el ID de usuario se pasa dentro del claim sub.Ejemplo: login_hint={"format": "iss_sub", "iss": "https://{YOUR_DOMAIN}.auth0.com/", "sub":"{USER_ID}"}El ID de usuario puede tener un formato diferente según el proveedor externo. |
requested_expiry | La expiración solicitada del flujo CIBA debe estar entre 1 y 259200 segundos (72 horas), y el valor predeterminado es 300 segundos. Incluya el parámetro requested_expiry para establecer una expiración personalizada para el flujo CIBA.El parámetro requested_expiry ayuda a determinar qué canal de notificación usa CIBA:
|
binding_message | Mensaje legible usado para vincular el flujo CIBA entre los dispositivos de autenticación y de consumo. El mensaje de vinculación es obligatorio y puede tener hasta 64 caracteres. Use solo caracteres alfanuméricos y +-_.,:# |
audience | Identificador único de la audiencia del token emitido. |
authorization_details | Una matriz JSON opcional de objetos que describe los permisos que se van a autorizar. Debe registrar el valor type de cada objeto en el servidor de recursos mediante el parámetro authorization_details del servidor de recursos. Para obtener más información, consulte Configure Rich Authorization Requests. |
Paso 2: El inquilino de Auth0 confirma la solicitud CIBA
POST, deberías recibir una respuesta que contenga un auth-req-id que haga referencia a la solicitud:
auth_req_id se envía al endpoint /token para consultar periódicamente si el flujo CIBA se ha completado.
Paso 3: La aplicación cliente consulta periódicamente si hay una respuesta
/token con el grant type urn:openid:params:grant-type:ciba y el auth_req_id que recibió del endpoint /bc-authorize:
- cURL
- C#
- Go
- Java
/token.
Paso 4: El dispositivo de autenticación recibe la notificación
- Notificación push móvil: Auth0 la envía a la aplicación Auth0 Guardian o a una aplicación móvil personalizada integrada con el SDK de Auth0 Guardian.
- Notificación por correo electrónico: Auth0 la envía a la dirección de correo electrónico verificada del usuario.
Paso 5: El dispositivo de autenticación obtiene los detalles del consentimiento
binding_message, de la API de consentimiento de Auth0:
- Notificación push móvil: La aplicación Auth0 Guardian o una aplicación personalizada integrada con el SDK de Auth0 Guardian llama a la API de consentimiento de Auth0 para obtener los detalles del consentimiento.
- Notificación por correo electrónico: Cuando el usuario hace clic en el enlace de verificación, se le redirige al navegador, que obtiene los detalles del consentimiento de la API de consentimiento de Auth0.
Paso 6: El dispositivo de autenticación presenta los detalles del consentimiento al usuario
binding_message, scope, audience y authorization_details, si están configurados. Los alcances que se devuelven a la aplicación móvil se filtran de acuerdo con su política de RBAC. Para obtener más información, consulte Control de acceso basado en roles.
El siguiente ejemplo de código muestra una respuesta de la API de consentimiento de Auth0:
authorization_details:
- Notificación push móvil: La aplicación Auth0 Guardian muestra
authorization_detailsen una pantalla de consentimiento mediante una notificación push. - Notificación por correo electrónico: El navegador muestra
authorization_detailsen una pantalla de consentimiento personalizada. Para obtener información sobre cómo personalizar la pantalla de consentimiento, consulta Configurar una pantalla de consentimiento personalizada.
Paso 7: El dispositivo de autenticación envía la respuesta del usuario a Auth0
- Notificación push móvil: La aplicación Auth0 Guardian o una aplicación personalizada integrada con el SDK de Auth0 Guardian envía la respuesta del usuario a Auth0.
- Notificación por correo electrónico: El navegador envía la respuesta del usuario a Auth0.
Paso 8: Auth0 recibe la respuesta del usuario una vez completado el flujo
/token. Un flujo de CIBA siempre requiere una respuesta del usuario que autoriza, ya sea de aprobación o de rechazo, y no se comprueban las autorizaciones ya concedidas. Esto significa que Auth0 trata cada solicitud de CIBA como una nueva autorización para el usuario que autoriza.
Paso 9: Auth0 devuelve el token de acceso a la aplicación cliente
authorization_details como los siguientes:
El
refresh_token solo estará presente si el scope offline_access se incluyó en la solicitud inicial a /bc-authorize.authorization_details a partir de los detalles de consentimiento de forma segura en cuanto a tipos, igual que consultaría JSON de forma dinámica:
- iOS
- Android
filterAuthorizationDetailsByType() para devolver todos los objetos authorization_details que coincidan con el tipo deseado.
En la siguiente muestra de código se consulta authorization_details con el tipo payment:
- iOS
- Android
filterAuthorizationDetailsByType() solo devuelve objetos que coinciden con el tipo de authorization_details especificado. Como resultado, su aplicación móvil debe presentar al usuario todos los authorization_details pertinentes para el consentimiento, independientemente de su tipo, a fin de garantizar una comprensión completa de la solicitud
También puede consultar authorization_details cuando el agente de IA o la aplicación sondea el endpoint /oauth/token para obtener una respuesta:
| Parámetros | Descripción |
|---|---|
grant_type | Defínalo como el tipo de concesión de CIBA: urn:openid:params:grant-type:ciba |
client_id | Defínalo como el ID de cliente de la aplicación. |
client_secret | Defínalo como el secreto del cliente de la aplicación. |
auth_req_id | Lo devuelve el inquilino de Auth0 cuando confirma la solicitud de CIBA. Hace referencia a la solicitud de CIBA. |
authorization_details:
Limitaciones
- Modificar RAR en Actions para flujos de CIBA.
- Anunciar tipos de RAR para que los clientes puedan descubrirlos, lo que significa que debes prerregistrar a los clientes con los tipos de
authorization_detailsque pueden enviar. - Validar objetos RAR más allá de comprobar que tengan una propiedad
typeque coincida con los tipos permitidos para la API. Tu servidor de recursos es responsable de la validación detallada del contenido deauthorization_details. Para obtener más información, consulta Configurar RAR.