Llama a tu API mediante el flujo de código de autorización con PKCE
Obtén información sobre cómo llamar a tu 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.
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.
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.
// Ver https://developer.android.com/reference/android/util/Base64// Importar la clase Base64// import android.util.Base64;SecureRandom sr = new SecureRandom();byte[] code = new byte[32];sr.nextBytes(code);String verifier = Base64.encodeToString(code, Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING);
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;
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.
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
Nombre del parámetro
Descripción
response_type
Indica el tipo de credencial que devolverá Auth0 (code o token). Para este flujo, el valor debe ser code.
code_challenge
Desafío generado a partir de code_verifier.
code_challenge_method
Método utilizado para generar el desafío (por ejemplo, S256). La especificación PKCE define dos métodos, S256 y plain; en este ejemplo se usa el primero y es el único compatible con Auth0, ya que el segundo no se recomienda.
La URL a la que Auth0 redirigirá el navegador después de que el usuario haya otorgado la autorización. El código de autorización estará disponible en el parámetro de URL code. 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 de OAuth 2.0, Auth0 elimina todo lo que aparece después del hash y no respeta ningún fragmento.
El identificador único de la API a la que tu aplicación móvil quiere acceder. Usa el valor Identifier en la pestaña Settings 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 agrega 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 Mitigar ataques CSRF con parámetros state.
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 la invitación a 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 llamar a una API podría verse así:
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.
La URL de devolución de llamada válida configurada en la configuración de tu aplicación. Debe coincidir exactamente con el redirect_uri enviado a la URL de autorización en el paso anterior de este tutorial. Ten en cuenta que debe estar codificada como URL.
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.
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.
(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, puedes solicitar un conjunto reducido de alcances. Ten en cuenta que debe estar codificado en URL.
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:
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:
exports.onExecutePostLogin = async (event, api) => { // Agregar claim personalizado al Token de acceso y al ID Token api.accessToken.setCustomClaim('https://foo/bar', 'value'); api.idToken.setCustomClaim('https://fiz/baz', 'some other value'); // Modificar el scope del Token de acceso api.accessToken.addScope('foo'); api.accessToken.addScope('bar');};
Los alcances estarán disponibles en el token después de que se ejecute la Action.