Saltar al contenido principal
Este tutorial le ayudará a invocar su propia API mediante el Flujo de código de autorización. Si desea obtener más información sobre cómo funciona este flujo y por qué debería usarlo, consulte Flujo de código de autorización. Si desea aprender a agregar Login a su aplicación web tradicional, consulte Agregar Login mediante el Flujo de código de autorización.
Auth0 facilita la implementación del Flujo de en su aplicación mediante:

Requisitos previos

Antes de comenzar este tutorial:
  • Registre su aplicación en Auth0.
    • Seleccione Regular Web Apps como Application Type.
    • Agregue {https://yourApp/callback} como Allowed Callback URL.
    • Asegúrese de que Grant Types de su aplicación incluya código de autorización. Para saber cómo hacerlo, consulte Update Grant Types.
    • Si quiere que su aplicación pueda usar tokens de actualización, asegúrese de que Grant Types de la aplicación incluya refresh token. Para saber cómo hacerlo, consulte Update Grant Types. 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 poder obtener tokens nuevos cuando caduquen los anteriores, habilite Allow Offline Access.

Pasos

Este paso puede incluir uno o más de los siguientes procesos:
  • Autenticar al usuario
  • Redirigir al usuario a un Proveedor de identidad para gestionar la autenticación
  • Comprobar 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 enviar al usuario a la URL de autorización.

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 audience
  • puedes incluir alcances adicionales compatibles con la API de destino
Nombre del parámetroDescripción
response_typeIndica el tipo de credencial que devolverá Auth0 (code o token). Para este flujo, el valor debe ser code.
client_idEl ID de cliente de tu aplicación. Puedes encontrar este valor en la configuración de la aplicación.
redirect_uriLa URL a la que Auth0 redirigirá el navegador después de que el usuario haya concedido la autorización. El código de autorización estará disponible en el parámetro code de la URL. Debes especificar esta URL como una URL de devolución de llamada válida en la configuración de la aplicación.

Advertencia: Según la especificación OAuth 2.0, Auth0 elimina todo lo que aparece después del hash y no respeta ningún fragmento.
scopeEspecifica los alcances para los que quieres solicitar autorización, que determinan qué claims (o atributos de usuario) quieres que se devuelvan. Deben separarse con un espacio. Puedes solicitar cualquiera de los alcances estándar de OpenID Connect (OIDC) sobre usuarios, como profile o email, claims personalizados que cumplan con un formato con espacio de nombres, o cualquier alcance compatible con la API de destino (por ejemplo, read:contacts). 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 aplicación).
audienceEl identificador único de la API a la que tu aplicación web quiere acceder. Usa el valor de Identifier en la pestaña Configuración de la API que creaste como parte de los requisitos previos de este tutorial.
state(recomendado) Una cadena alfanumérica arbitraria y opaca que tu aplicación añade a la solicitud inicial y que Auth0 incluye al redirigir de vuelta a tu aplicación. Para ver cómo usar este valor para prevenir ataques de Cross-site Request Forgery (CSRF), consulta Mitigate CSRF Attacks With State Parameters.
organization(opcional) id de la organización que se usará al autenticar a un usuario. Si no se proporciona y tu aplicación está configurada para Display Organization Prompt, el usuario podrá introducir el nombre de la organización al autenticarse.
invitation(opcional) id del ticket de invitación de la organización. Al invitar a un miembro a una Organización, tu aplicación debe gestionar la aceptación de la invitación reenviando los pares clave-valor invitation y organization cuando el usuario acepte la invitación.
Como ejemplo, tu fragmento HTML para la URL de autorización al agregar inicio de sesión a tu aplicación podría verse así:

Respuesta

Si todo sale bien, recibirás una respuesta HTTP 302. El código de autorización se incluye al final de la URL:
HTTP/1.1 302 Found
Location: {https://yourApp/callback}?code={authorizationCode}&state=xyzABC123
Ahora que tienes un código de autorización, debes intercambiarlo por tokens. Con el código de autorización (code) obtenido en el paso anterior, deberás hacer un POST a la URL de token.

Ejemplo de POST a la URL del token

Parámetros
Nombre del parámetroDescripción
grant_typeEstablece este valor en authorization_code.
codeEl authorization_code obtenido en el paso anterior de este tutorial.
client_idEl ID de cliente de tu aplicación. Puedes encontrar este valor en la configuración de la aplicación.
client_secretEl Secreto del cliente de su aplicación. Puede encontrar este valor en la configuración de la aplicación. Para obtener más información sobre los métodos de autenticación de aplicaciones disponibles, consulte Credenciales de la aplicación.
redirect_uriLa URL de devolución de llamada válida configurada en la configuración de la aplicación. Debe coincidir exactamente con el valor de redirect_uri enviado a la URL de autorización en el paso anterior de este tutorial. Tenga en cuenta que debe estar codificado como URL.

Respuesta

Si todo va bien, recibirás una respuesta HTTP 200 con una carga útil que contiene los valores access_token, refresh_token, id_token y token_type:
{
  "access_token": "eyJz93a...k4laUWw",
  "refresh_token": "GEbRxBN...edjnXbL",
  "id_token": "eyJ0XAi...4faeEoQ",
  "token_type": "Bearer"
}
Valide sus tokens antes de guardarlos. Para saber cómo hacerlo, lea Validar tokens de ID y Validar tokens de acceso.
Los ID Token contienen información del usuario que debe decodificarse y extraerse.Los tokens de acceso se utilizan para llamar al endpoint /userinfo de la API de autenticación de Auth0 u otra API. Si estás llamando a tu propia API, lo primero que esta deberá hacer es verificar el token de acceso.Los tokens de actualización se utilizan para obtener un nuevo token de acceso o token de ID una vez que el anterior ha expirado. El refresh_token solo estará presente en la respuesta si incluiste el scope offline_access y habilitaste Allow Offline Access para tu API en el Dashboard.
Los tokens de actualización deben almacenarse de forma segura, ya que permiten que un usuario siga autenticado prácticamente de forma indefinida.
Para llamar a su API desde una aplicación web tradicional, la aplicación debe enviar el token de acceso obtenido como Bearer Token en el encabezado Authorization de la solicitud HTTP.
Ya has recibido un token de actualización si has seguido este tutorial y completado los siguientes pasos:
  • configurado la API para permitir el acceso sin conexión
  • incluiste el scope offline_access al iniciar la solicitud de autenticación a través del endpoint de autorización.
Puedes usar el Token de actualización para obtener un nuevo token de acceso. Por lo general, un usuario necesitará un nuevo token de acceso solo después de que el anterior haya expirado o al acceder a un nuevo recurso por primera vez. Llamar al endpoint para obtener un nuevo token de acceso cada vez que se llama a una API es una mala práctica; Auth0 aplica límites de frecuencia que restringen la cantidad de solicitudes al endpoint que se pueden ejecutar usando el mismo token desde la misma IP.Para actualizar tu token, realiza una solicitud POST al endpoint /oauth/token de la Authentication API con grant_type=refresh_token.
Ejemplo de POST a la URL del token
Parámetros
Nombre del parámetroDescripción
grant_typeConfigura este valor como refresh_token.
client_idEl ID de cliente de su aplicación. Puede encontrar este valor en la Configuración de la aplicación.
refresh_tokenEl token de actualización que se va a usar.
scope(opcional) Una lista de permisos de scope solicitados separada por espacios. Si no se envía, se usarán los alcances originales; de lo contrario, puedes solicitar un conjunto reducido de alcances. Ten en cuenta que debe estar codificado para URL.
Respuesta
Si todo va bien, recibirás una respuesta HTTP 200 con una carga útil que contiene un nuevo access_token, su duración en segundos (expires_in), los valores de scope otorgados y el token_type. Si el scope del token inicial incluía openid, la respuesta también incluirá un nuevo id_token:
{
  "access_token": "eyJ...MoQ",
  "expires_in": 86400,
  "scope": "openid offline_access",
  "id_token": "eyJ...0NE",
  "token_type": "Bearer"
}
Valide sus tokens antes de guardarlos. Para saber cómo hacerlo, lea Validar ID Tokens y Validar tokens de acceso.

Ejemplos de casos de uso

Personalizar tokens

Puede usar Auth0 Actions para modificar los alcances de un y/o agregar claims personalizados a los tokens de acceso y . Para obtener más información sobre Actions, consulte Comprenda cómo funcionan las Actions de Auth0. Para ello, agregue la siguiente Action de Post-Login, que se ejecutará después de que el usuario se autentique:
exports.onExecutePostLogin = async (event, api) => {
  // Agregar claims personalizados al Access Token y al ID Token
  api.accessToken.setCustomClaim('https://foo/bar', 'value');
  api.idToken.setCustomClaim('https://fiz/baz', 'some other value');

  // Modificar el scope del Access Token
  api.accessToken.addScope('foo');
  api.accessToken.addScope('bar');
};
Auth0 devuelve la información del perfil en un formato estructurado de claims, tal como lo define la especificación OpenID Connect (OIDC). Esto significa que los claim personalizados agregados a los ID Token o a los tokens de acceso deben ajustarse a las directrices y restricciones para evitar posibles colisiones.

Más información