Saltar al contenido principal
Este tutorial te ayuda a llamar a tu propia API desde una aplicación nativa, móvil o de una sola página mediante el Flujo de código de autorización con PKCE. Para saber cómo funciona el flujo y por qué deberías usarlo, consulta Flujo de código de autorización con Proof Key for Code Exchange (PKCE). Para aprender a añadir Login a tu aplicación nativa, móvil o de una sola página, consulta Añadir Login mediante el Flujo de código de autorización con PKCE.
Auth0 facilita que tu aplicación implemente el Flujo de código de autorización con Proof Key for Code Exchange (PKCE) mediante:

Requisitos previos

Antes de comenzar este tutorial:
  • Registre la aplicación en Auth0.
    • Seleccione Native o Single-Page App en Tipo de aplicación, según corresponda a su aplicación.
    • Agregue {yourCallbackUrl} como URL de devolución de llamada permitida. El formato de la URL de devolución de llamada varía según el tipo de aplicación y la plataforma. Para obtener más información sobre el formato correspondiente a su tipo de aplicación y plataforma, consulte nuestros Quickstarts de Native/Mobile y Quickstarts de Single-Page App.
    • Asegúrese de que los Tipos de concesión de la aplicación incluyan código de autorización. Para saber cómo hacerlo, consulte Actualizar tipos de concesión.
    • Si quiere que su aplicación pueda usar tokens de actualización, asegúrese de que los Tipos de concesión de la aplicación incluyan Token de actualización. 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.
  • Registre su API en Auth0
    • Si quiere que su API reciba tokens de actualización para obtener tokens nuevos cuando los anteriores expiren, habilite Permitir acceso sin conexión.

Pasos

  1. Crear verificador de código: Genera un code_verifier que se enviará a Auth0 para solicitar tokens.
  2. Crear desafío de código: Genera un code_challenge a partir del code_verifier que se enviará a Auth0 para solicitar un authorization_code.
  3. Autorizar al usuario: Solicita la autorización del usuario y redirígelo a tu aplicación con un authorization_code.
  4. Solicitar tokens: Intercambia tu authorization_code y code_verifier por tokens.
  5. Llamar a la API: Usa el Token de acceso obtenido para llamar a tu API.
  6. Tokens de actualización: Usa un token de actualización para solicitar nuevos tokens cuando los actuales expiren.
Opcional: Explorar ejemplos de casos de uso.

Crear el verificador de código

Cree un code_verifier, que es una clave aleatoria codificada en Base64 y criptográficamente segura, que posteriormente se enviará a Auth0 para solicitar tokens.

Ejemplo de JavaScript

Ejemplo en Java

Ejemplo para Android

Ejemplo en Swift 5

Ejemplo en Objective-C

Crear el desafío de código

Genera un code_challenge a partir del code_verifier que se enviará a Auth0 para solicitar un authorization_code.

Ejemplo de Javascript

Ejemplo en Java

Ejemplo en Swift 5

Ejemplo en Objective-C

Autorizar al usuario

Una vez que hayas creado el code_verifier y el code_challenge, debes obtener la autorización del usuario. Técnicamente, este es el inicio del , y este paso puede incluir uno o más de los siguientes procesos:
  • Autenticar al usuario;
  • Redirigir al usuario a un para gestionar la autenticación;
  • Verificar si hay sesiones activas de inicio de sesión único (SSO);
  • Obtener el consentimiento del usuario para el nivel de permisos solicitado, a menos que ya se haya otorgado previamente.
Para autorizar al usuario, tu aplicación debe dirigir al usuario a la URL de autorización, incluido el code_challenge que generaste en el paso anterior y el método que usaste para generarlo.

Ejemplo de URL de autorización

Parámetros
Ten en cuenta que, para autorizar a un usuario al llamar a una API personalizada, debes:
  • incluir un parámetro
  • puedes incluir alcances adicionales admitidos por la API de destino
Como ejemplo, tu fragmento HTML para la URL de autorización al llamar a una API podría verse así:

Respuesta

Si todo sale bien, recibirá una respuesta HTTP 302. El código de autorización se incluye al final de la URL:

Solicitar tokens

Ahora que ya tiene un código de autorización, debe intercambiarlo por tokens. Con el código de autorización extraído (code) en el paso anterior, deberá realizar un POST a la URL del token y enviar también el code_verifier.

Ejemplo de una solicitud POST a la URL del token

Parámetros

Respuesta

Si todo sale bien, recibirás una respuesta HTTP 200 con una carga útil que incluye los valores access_token, refresh_token, id_token y token_type:
Valide sus tokens antes de guardarlos. Para obtener más información, consulte Validar ID Token y Validar tokens de acceso.
ID Token contiene información del usuario que debe decodificarse y extraerse. Los tokens de acceso se usan para llamar al endpoint /userinfo de la API de autenticación de Auth0 o a otra API. Si está llamando a su propia API, lo primero que deberá hacer es verificar el token de acceso. Los tokens de actualización se usan para obtener un nuevo o después de que haya expirado el anterior. 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.
Los tokens de actualización deben almacenarse de forma segura, ya que permiten que un usuario permanezca autenticado prácticamente para siempre.

Llamar a la API

Para llamar a la API desde una aplicación nativa o móvil, la aplicación debe enviar el Token de acceso obtenido como Bearer Token en el encabezado Authorization de la solicitud HTTP.

Tokens de actualización

Ya recibió un token de actualización si ha seguido este tutorial y completó lo siguiente:
  • configuró su API para permitir acceso sin conexión
  • incluyó el scope offline_access cuando inició la solicitud de autenticación a través del endpoint de autorización.
Puede usar el para obtener un nuevo token de acceso. Normalmente, un usuario solo necesitará un nuevo token de acceso después de que caduque el anterior o cuando obtenga acceso a un recurso nuevo por primera vez. Es una mala práctica llamar al endpoint para obtener un nuevo token de acceso cada vez que llame a una API, y Auth0 aplica límites de frecuencia que restringen la cantidad de solicitudes al endpoint que pueden ejecutarse con el mismo token desde la misma IP. Para renovar su token, haga una solicitud POST al endpoint /oauth/token en la Authentication API, usando grant_type=refresh_token.

Ejemplo de solicitud POST a la URL del token

Parámetros

Respuesta

Si todo sale bien, recibirás una respuesta HTTP 200 con una carga útil que incluye un nuevo access_token, su duración en segundos (expires_in), los valores de scope concedidos y token_type. Si el scope del token inicial incluía openid, la respuesta también incluirá un nuevo id_token:
Valida tus tokens antes de guardarlos. Para obtener más información, consulta Validar ID Tokens y Validar tokens de acceso.

Ejemplos de casos de uso

Personalizar tokens

Puede usar Actions para cambiar los alcances que devuelven los tokens de acceso y/o agregar claims a los tokens de acceso y a los ID Token. (Para obtener más información sobre Actions, lea Auth0 Actions. ) Para ello, agregue la siguiente Action, que se ejecutará después de que el usuario se autentique:
Los alcances estarán disponibles en el token después de que se ejecute la Action.
Auth0 devuelve la información del perfil en un formato estructurado de claims, tal como lo define la especificación de OpenID Connect (OIDC). Esto significa que los claims personalizados agregados a ID Token o tokens de acceso deben ajustarse a las pautas y restricciones para evitar posibles colisiones.

Ver la aplicación de ejemplo: aplicación móvil + API

Para ver una implementación de ejemplo, consulte el escenario de arquitectura Mobile + API. Esta serie de tutoriales incluye un ejemplo de código al que puede acceder en GitHub.

Más información