Tipo de permiso de credenciales de contraseña de propietario de recurso
Utilice este tipo de permiso cuando el propietario del recurso tenga una relación de confianza con el cliente, como un sistema operativo de computadora o una aplicación con muchos privilegios, porque el cliente debe desechar la contraseña después de utilizarla para obtener el token de acceso.
En el siguiente diagrama se muestra el flujo Tipo de otorgamiento de credenciales de contraseña de propietario de recurso.
En este flujo OAuth:
-
El usuario hace clic en un enlace de la aplicación cliente que solicita acceso a los recursos protegidos.
-
La aplicación cliente solicita el nombre de usuario y la contraseña del propietario del recurso.
-
El usuario inicia sesión con su nombre de usuario y contraseña.
-
La aplicación cliente intercambia esas credenciales por un token de acceso y, a menudo, un token de refrescamiento desde el servidor de autorización.
-
El servidor de autorización devuelve el token de acceso a la aplicación cliente.
-
La aplicación cliente utiliza el token de acceso en una llamada de API para obtener datos protegidos, como una lista de usuarios.
| Función | Disponible |
|---|---|
| Requiere autenticación de cliente | No |
| Requiere que el cliente tenga conocimiento de las credenciales de usuario | Sí |
| Interacción con el usuario final basada en explorador | No |
| Puede utilizar un proveedor de identidad externo para la autenticación | No |
| Se permite el símbolo de refrescamiento | Sí |
| El token de acceso está en el contexto del usuario final | Sí |
Consulte un ejemplo de Resource Owner Password Credentials Grant Type Authorization Flow Example.
Ejemplo de flujo de autorización de tipo de permiso para credenciales de contraseña del propietario del recurso
Este ejemplo de flujo de autorización le guía a través de la obtención de un token de acceso mediante las credenciales (usuario) del propietario del recurso.
Al crear una aplicación mediante el tipo de permiso Propietario de recurso en la consola del dominio de identidad:
-
Especifique Aplicación de confianza como tipo de aplicación.
-
Seleccione Propietario de recurso como tipo de permiso.
-
Especifique el URI de redirección, que es donde se envían las respuestas a las solicitudes de autenticación.
Consulte Resource Owner Password Credentials Grant Type para obtener más información sobre el tipo de permiso Credenciales de contraseña del propietario del recurso y un diagrama de flujo de autorización.
Flujo de autorización
-
Un usuario hace clic en un enlace de la aplicación cliente de servidor web, solicitando acceso a los recursos protegidos desde una aplicación de servidor web de terceros.
-
La aplicación cliente recopila el nombre de usuario y la contraseña del usuario y solicita un token de acceso del servidor de autorización (AS) OAuth.
La URL de solicitud contiene parámetros de consulta que indican el tipo de acceso que se solicita:
Ejemplo de solicitud mediante la cabecera de autorización
curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&scope=<scope value>'Ejemplo de solicitud mediante la cabecera de autorización que incluye el token de refrescamiento en la solicitud
curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&scope=<Resource Server Scope>%20offline_access'Ejemplo de solicitud mediante una afirmación de cliente JWT
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<scope value>'Ejemplo de solicitud mediante una afirmación de cliente de JWT que incluye el token de refrescamiento en la solicitud
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<Resource Server Scope>%20offline_access'Ejemplo de solicitud usando mTLS
Para obtener información sobre cómo obtener
secureDomainURL, consulte Acceso a tipos de permiso.curl -v \ --cert cert.crt \ --key key.key \ --cacert ca.crt \ --location '<secureDomainURL>/oauth2/v1/token' \ --header 'Authorization: Basic <base64Encoded clientid:secret>' --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id=<client-id>' \ --data-urlencode 'scope=urn:opc:idm:_myscopes_' -
El servidor de autorización OAuth devuelve el token de acceso. El token de acceso contiene todos los ámbitos aplicables en función de los privilegios representados por los roles de aplicación del dominio de identidad otorgados a la aplicación cliente solicitante y al usuario que está especificando la solicitud del cliente (si existe).
Nota
Si se ha realizado una solicitud para un ámbito no válido, se devuelve un error en lugar del token de acceso. -
El sitio solicitante utiliza el token de acceso en una llamada de API para obtener datos protegidos.