Este tutorial te ayudará a llamar a tu propia API desde un dispositivo con entrada limitada mediante el Flujo de autorización de dispositivo. Si quieres obtener más información sobre cómo funciona el flujo y por qué deberías usarlo, consulta Flujo de autorización de dispositivo.
- Authentication API: Sigue leyendo para aprender a llamar directamente a nuestra API. Para una experiencia interactiva, consulta Entorno de pruebas del flujo de dispositivo.
Requisitos previos
- Consulte las limitaciones (a continuación) para asegurarse de que el Flujo de autorización de dispositivo sea adecuado para su implementación.
-
Registre la aplicación en Auth0.
- Seleccione Native en Application Type.
- Si es necesario, configure Allowed Web Origins. Puede usar esta opción para permitir localhost como origen durante el desarrollo local o para establecer un origen permitido para software de TV específico con una arquitectura sujeta a CORS (por ejemplo, HTML5 + JS). La mayoría de las aplicaciones no usarán esta configuración.
- Asegúrese de que la opción OIDC Conformant esté habilitada. Esta configuración se encuentra en el Dashboard, en Applications > Application > Advanced Settings > OAuth.
- Asegúrese de que los Grant Types de la aplicación incluyan Device Code. Para saber cómo hacerlo, consulte Actualizar tipos de concesión.
- Si desea que la aplicación pueda usar tokens de actualización, asegúrese de que los Grant Types de la aplicación incluyan Refresh Token. Para saber cómo hacerlo, consulte Actualizar tipos de concesión. Para obtener más información sobre los tokens de actualización, consulte Tokens de actualización.
- Configure y habilite al menos una conexión para la aplicación: Conexiones de base de datos, Conexiones sociales
-
Registre su API en Auth0
- Si desea que su API reciba tokens de actualización para poder obtener nuevos tokens cuando caduquen los anteriores, habilite Allow Offline Access. Para obtener más información sobre los tokens de actualización, consulte Tokens de actualización.
- Configure los ajustes del código de usuario del dispositivo para definir el conjunto de caracteres, el formato y la longitud de su código de usuario generado aleatoriamente.
Pasos
- Solicitar código de dispositivo (flujo de dispositivo): Solicite un código de dispositivo que el usuario pueda usar para autorizar el dispositivo.
- Solicitar activación del dispositivo (flujo de dispositivo): Solicite que el usuario autorice el dispositivo con su portátil o smartphone.
- Solicitar tokens (flujo de dispositivo): Consulte periódicamente el endpoint de token para solicitar un token.
- Autorizar al usuario (flujo del navegador): El usuario autoriza el dispositivo para que este pueda recibir tokens.
- Recibir tokens (flujo de dispositivo): Después de que el usuario autorice correctamente el dispositivo, reciba los tokens.
- Llamar a la API (flujo de dispositivo): Use el Token de acceso obtenido para llamar a su API.
- Renovar tokens (flujo de dispositivo): Use un Token de actualización para solicitar nuevos tokens cuando los existentes expiren.
Solicitar código de dispositivo
Ejemplo de POST a la URL de código de dispositivo
Parámetros del código de dispositivo
- debes incluir un parámetro
- puedes incluir alcances adicionales admitidos por la API de destino
Si tu aplicación solo quiere un Token de acceso para obtener información sobre el usuario autenticado, no se requiere ningún parámetro audience.
| Nombre del parámetro | Descripción |
|---|---|
client_id | El ID de cliente de tu aplicación. Puedes encontrar este valor en la configuración de la aplicación. |
scope | Los alcances para los que quieres solicitar autorización. Deben estar separados por espacios. Puedes solicitar cualquiera de los alcances estándar de OIDC sobre usuarios, como profile y email, claims personalizados que cumplan con un formato con espacio de nombres, o cualquier alcance admitido por la API de destino (por ejemplo, read:contacts). Incluye openid para obtener un ID Token o para poder usar el endpoint /userinfo y recuperar información del perfil del usuario. Incluye offline_access para obtener un Token de actualización (asegúrate de que el campo Allow Offline Access esté habilitado en la configuración de la API). Ten en cuenta que debe estar codificado como URL. |
audience | El identificador único de la API a la que tu aplicación quiere acceder. Usa el valor de Identifier en la pestaña Settings de la API que creaste como parte de los requisitos previos de este tutorial. Ten en cuenta que debe estar codificado como URL. |
Respuesta del código de dispositivo
HTTP 200 con una carga útil que contiene los valores device_code, user_code, verification_uri, expires_in, interval y verification_uri_complete:
device_codees el código único del dispositivo. Cuando el usuario acceda averification_uridesde un dispositivo con navegador, este código se vinculará a su sesión.user_codecontiene el código de usuario que debe introducirse enverification_uripara autorizar el dispositivo.verification_uricontiene la URL que el usuario debe visitar para autorizar el dispositivo.verification_uri_completecontiene la URL completa que el usuario debe visitar para autorizar el dispositivo. Esto permite que su aplicación incorporeuser_codeen la URL, si así lo desea.expires_inindica la duración (en segundos) dedevice_codeyuser_code.intervalindica el intervalo (en segundos) con el que la aplicación debe consultar la URL del token para solicitar un token.
Puede configurar el conjunto de caracteres, el formato y la longitud de su código de usuario generado aleatoriamente en la Configuración del Tenant.Para evitar ataques de fuerza bruta, aplicamos los siguientes límites a
user_code:Longitud mínima:- Letras BASE20: 8 caracteres
- Números: 9 caracteres
- 20 caracteres (incluidos los guiones y los espacios, que pueden añadirse como separadores para mejorar la legibilidad)
- 15 minutos
Solicitar la activación del dispositivo
device_code y un user_code, debes pedirle al usuario que vaya a la verification_uri desde su portátil o smartphone e introduzca el user_code:

device_code no está pensado para el usuario y no debe mostrarse durante la interacción para evitar confundirlo.
Al crear una CLI, puedes omitir este paso y abrir el navegador directamente con
verification_uri_complete.Solicitar tokens
interval) extraído del paso anterior, deberá realizar un POST a la URL del token enviando el device_code.
Para evitar errores debidos a la latencia de la red, debe comenzar a contar cada intervalo después de recibir la respuesta de la última solicitud de sondeo.
Ejemplo de solicitud POST de token a la URL del token
Parámetros de la solicitud de token
| Nombre del parámetro | Descripción |
|---|---|
grant_type | Establézcalo en “urn:ietf:params:oauth:grant-type:device_code”. Este es un tipo de concesión de extensión (como se define en la sección 4.5 de RFC6749). Tenga en cuenta que debe codificarse como URL. |
device_code | El device_code recuperado en el paso anterior de este tutorial. |
client_id | El ID de cliente de su aplicación. Puede encontrar este valor en la configuración de la aplicación. |
Respuestas de token
HTTP 4xx:
Verá este error mientras espera a que el usuario realice alguna acción. Continúe con el sondeo usando el intervalo sugerido obtenido en el paso anterior de este tutorial.
Vaya más despacio
Token vencido
device_code venció. Su aplicación debe notificarle que el flujo venció e indicarle que lo inicie de nuevo.
Acceso denegado
- el usuario se negó a autorizar el dispositivo
- el denegó la transacción
- una Rule configurada denegó el acceso (Para obtener más información, consulta Auth0 Rules.)


- Autenticar al usuario;
- Redirigir al usuario a un para encargarse de la autenticación;
- Comprobar si hay sesiones activas de ;
- Obtener el consentimiento del usuario para el dispositivo, a menos que ya lo haya otorgado previamente.


Recibir tokens
HTTP 200 con una carga útil que contiene los valores access_token, refresh_token (opcionalmente), id_token (opcionalmente), token_type y expires_in:
/userinfo de la API de autenticación de Auth0 o a otra API. (Para obtener más información sobre los tokens de acceso, lea Access Tokens.) Solo podrá usar el Token de acceso para llamar a /userinfo si incluyó el scope openid. Si llama a su propia API, lo primero que deberá hacer es verificar el Token de acceso.
contienen información del usuario que debe decodificarse y extraerse. (Para obtener más información sobre los ID Token, lea ID Tokens.) El id_token solo estará presente en la respuesta si incluyó el scope openid.
se usan para obtener un nuevo Token de acceso o ID Token después de que el anterior haya expirado. (Para obtener más información sobre los tokens de actualización, lea Refresh Tokens.) El refresh_token solo estará presente en la respuesta si incluyó el scope offline_access y habilitó Allow Offline Access para su API en el Dashboard.
Llama a tu API
Tokens de actualización
- configuraste tu API para permitir el acceso sin conexión
- incluiste el scope
offline_accesscuando iniciaste la solicitud de authentication a través del endpoint de autorización
POST al endpoint /oauth/token de la Authentication API, con grant_type=refresh_token.
Ejemplo de POST de un Token de actualización a la URL del token
Parámetros de la solicitud de Token de actualización
| Nombre del parámetro | Descripción |
|---|---|
grant_type | Establezca este valor en “refresh_token”. |
client_id | El ID de cliente de su aplicación. Puede encontrar este valor en la configuración de la aplicación. |
client_secret | El Secreto del cliente de su aplicación. Puede encontrar este valor en la configuración de la aplicación. |
refresh_token | El Token de actualización que se va a usar. |
scope | (Opcional) Una lista de permisos de scope solicitados delimitada por espacios. Si no se envía, se usarán los alcances originales; de lo contrario, puede solicitar un conjunto reducido de alcances. Tenga en cuenta que debe codificarse como URL. |
Respuesta del Token de actualización
HTTP 200 con una carga útil que incluye un nuevo access_token, id_token (opcionalmente), la duración del token en segundos (expires_in), los valores de scope concedidos y token_type:
Casos de uso de ejemplo
protocol del objeto context:
Implementaciones de ejemplo
- Entorno de pruebas del flujo de autorización de dispositivo
- AppleTV (Swift): Aplicación sencilla que muestra cómo se puede usar Auth0 con el Flujo de autorización de dispositivo en un AppleTV.
- CLI (Node.js): Implementación de ejemplo de una CLI que usa el Flujo de autorización de dispositivo en lugar del Flujo de código de autorización. La principal diferencia es que tu CLI no necesita alojar un servidor web ni escuchar en un puerto.
Solución de problemas
Códigos de error
| Código | Nombre | Descripción |
|---|---|---|
fdeaz | Error en la solicitud de autorización del dispositivo | |
fdeac | Error en la activación del dispositivo | |
fdecc | El usuario canceló la confirmación del dispositivo | |
fede | Error en el intercambio | Código de dispositivo por token de acceso |
sede | Intercambio exitoso | Código de dispositivo por token de acceso |
Limitaciones
- Admitir Server Name Indication (SNI) cuando se usan dominios personalizados
- Tener un tipo de aplicación de Auth0 Native
- Tener el método de autenticación del endpoint de token establecido en None
- Ser conformes a OIDC
- No haberse creado mediante Dynamic Client Registration
- Social Connections que usan claves de desarrollador de Auth0, a menos que estés usando la experiencia de Universal Login
- Acceder a parámetros de la cadena de consulta desde la página de inicio de sesión alojada, Rules o Actions
- vinculación de cuentas de usuario