Este tutorial te ayudará a llamar a tu propia API mediante el flujo de contraseña del propietario del recurso. Si quieres obtener más información sobre cómo funciona el flujo y por qué deberías usarlo, consulta flujo de contraseña del propietario del recurso.
Requisitos previos
-
Registre su aplicación en Auth0.
- Seleccione un Tipo de aplicación de Aplicaciones web regulares.
- Agregue una URL de devolución de llamada permitida de
{https://yourApp/callback}. Este campo no puede dejarse sin definir o se devolverá un mensaje de error. - Asegúrese de que los Tipos de concesión de su aplicación incluyan Password. Para saber cómo hacerlo, lea Actualizar tipos de concesión.
- Si desea 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, lea Actualizar tipos de concesión. Para obtener más información sobre los tokens de actualización, lea Tokens de actualización.
-
Registre su API en Auth0
- Si desea que su API reciba tokens de actualización para poder obtener tokens nuevos cuando caduquen los anteriores, habilite Permitir acceso sin conexión.
-
Configure una conexión
- Asegúrese de que su conexión pueda autenticar usuarios con nombre de usuario y contraseña (por ejemplo, conexiones de base de datos, o AD/LDAP, ADFS o Azure Active Directory conexiones empresariales).
-
Actualice o deshabilite cualquier regla, de modo que solo afecten a conexiones específicas. Si obtiene un error
access_deniedal probar el Password Owner Resource Grant, esto podría deberse a una regla de control de acceso.
Pasos
- Configurar el inquilino:Establece la conexión predeterminada del inquilino.
- Solicitar tokens: Intercambia tu código de autorización por tokens.
- Llamar a la API: Usa el Token de acceso obtenido para llamar a tu API.
- Tokens de actualización: Usa un Token de actualización para solicitar nuevos tokens cuando caduquen los actuales.
Configurar el inquilino
- Vaya a Auth0 Dashboard > Tenant Settings y desplácese hacia abajo hasta encontrar la configuración Default Directory.
- Introduzca el nombre de la conexión que desea usar. Asegúrese de que pueda autenticar usuarios mediante username y contraseña.
Solicitar tokens
POST a la URL del token.
Ejemplo de solicitud POST a la URL del token
Parámetros
Respuesta
HTTP 200 con una carga útil que incluye los valores access_token, refresh_token, id_token, token_type y expires_in:
Flujo de contraseña del propietario del recurso y alcances estándar
Debido a que proporcionar una contraseña otorga acceso total, cualquier intercambio basado en contraseña da acceso a todos los alcances. Por ejemplo, si no incluye alcances de API en la solicitud, todos los alcances de la API se incluirán en el Token de acceso. Del mismo modo, si incluye solo el scope
openid en la solicitud, se devolverán todos los alcances estándar de OpenID Connect relacionados con openid. En estos casos, el parámetro scope se incluirá en la respuesta y enumerará los alcances emitidos.Obtener información de usuario sin un ID Token
Si necesita información del usuario, incluya el scope
openid en su solicitud. Si la API usa RS256 como algoritmo de firma, el Token de acceso incluirá /userinfo como una audiencia válida, lo que significa que puede usarlo para llamar al endpoint /userinfo y recuperar los claims del usuario.Llamar a la API
Tokens de actualización
- configuraste tu API para permitir el acceso sin conexión
- incluiste el scope
offline_accesscuando iniciaste la solicitud de autenticación mediante el endpoint de autorización.
POST al endpoint /oauth/token de la Authentication API con grant_type=refresh_token.
Ejemplo de POST a la URL del token
Parámetros
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.
Ejemplos de casos de uso
Personalizar tokens
Configurar la compatibilidad con realms
- Establecer el parámetro de solicitud
grant_typeenhttp://auth0.com/oauth/grant-type/password-realm. - Enviar un parámetro de solicitud adicional llamado
realmy establecerlo con el nombre del realm al que pertenece el usuario. Por ejemplo, si ha configurado una conexión de base de datos para empleados internos llamadaemployeesy el usuario pertenece a ella, establezcarealmenemployees.
Conexiones como realms
Cualquier conexión que admita autenticación activa puede configurarse como un realm, incluidas las conexiones de base de datos, las conexiones sin contraseña y las conexiones empresariales de AD/LDAP, ADFS y Azure Active Directory.