Tipo de concesión de código de autorización
Utilice este tipo de permiso cuando desee obtener un código de autorización mediante un servidor de autorización como intermediario entre la aplicación cliente y el propietario del recurso mediante dominios de identidad.
En el siguiente diagrama se muestra el flujo Tipo de permiso de código de autorización.
Un usuario hace clic en un enlace de una aplicación cliente de servidor web y solicita acceso a recursos protegidos.
La aplicación cliente redirige el explorador al punto final de autorización
oauth2/v1/authorize
con una solicitud de código de autorización.El servidor de autorización devuelve un código de autorización a la aplicación cliente mediante un redireccionamiento del explorador después de que el propietario del recurso dé su consentimiento.
A continuación, la aplicación cliente cambia el código de autorización por un token de acceso y, a menudo, por un token de refrescamiento.
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.Nota
Las credenciales del propietario del recurso nunca se exponen al cliente.
Función | Disponibles |
---|---|
Requiere autenticación de cliente | No |
Necesita que el cliente conozca las credenciales de usuario | No |
Interacción de usuario final basada en explorador | Sí |
Puede utilizar un proveedor de identidad externo para la autenticación | Sí |
Se permite el token de refrescamiento | Sí |
El token de acceso está en el contexto del usuario final | Sí |
Consulte un ejemplo de Ejemplo de flujo de autorización de tipo de otorgamiento de código de autorización.
Ejemplo de flujo de autorización de tipo de otorgamiento de código de autorización
Este ejemplo de flujo de autorización le guiará a través de una solicitud de conexión de OpenID Connect mediante un código de autorización.
Este flujo es un flujo OAuth de tres partes, que hace referencia a escenarios en los que la aplicación llama a las API del dominio de identidad en nombre de los usuarios finales y en los que a veces se necesita el consentimiento del usuario. Este flujo muestra cómo configurar la conexión única federada entre un dominio de identidad y una aplicación personalizada mediante OAuth 2.0 y OpenID Connect.
Al crear una aplicación mediante el tipo de permiso Código de autorización en la consola del dominio de identidad:
-
Especifique Trusted Application como tipo de aplicación.
-
Seleccione Código de autorización como tipo de permiso.
-
Especifique el URI de redirección, que es donde se envían las respuestas a las solicitudes de autenticación.
-
También puede seleccionar el tipo de permiso Token de refrescamiento para devolver un token de refrescamiento con el token de acceso.
Consulte Tipo de otorgamiento de código de autorización para obtener más información sobre el tipo de otorgamiento de código de autorización y un diagrama de flujo de autorización.
Flujo de autorización de autorización
-
Un usuario hace clic en un enlace de la aplicación cliente del servidor web (ofertas de cliente), solicitando acceso a recursos protegidos.
-
La aplicación Customer Quotes redirecciona el explorador al punto final de autorización del dominio de identidad
(oauth2/v1/authorize)
con una solicitud de código de autorización.La URL de solicitud contiene parámetros de consulta que indican el tipo de acceso que se está solicitando.Nota
Un valor nonce es una cadena aleatoria criptográficamente segura que se utiliza para evitar que se reutilicen las respuestas interceptadas.Ejemplo de solicitud: cliente confidencial/confidencial
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234
Ejemplo de solicitud: cliente confidencial/de confianza que incluye el token de refrescamiento en la solicitud
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client-id&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid%20<Resource Server Scope>%20offline_access&nonce=<nonce-value>&state=1234
Ejemplo de solicitud: cliente público
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=id_token&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234
Ejemplo de solicitud usando PKCE
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234&code_challenge=<code-challenge>&code_challenge_method=<plain|S256>'
-
El dominio de identidad recibe la solicitud e identifica que la aplicación Customer Quotes (identificada por su
client_id
) está solicitando un código de autorización para obtener más información sobre el propietario del recurso (ámbitoopenid).
) -
Si el usuario aún no está conectado, IAM reta al usuario a que se autentique. IAM comprueba las credenciales del usuario.
-
Si la conexión se realiza correctamente, IAM redirige el explorador a la aplicación Customer Quotes con un código de autorización.Nota
Si el usuario no se autentica, se devuelve un error en lugar del código de autorización. -
La aplicación Customer Quotes extrae el código de autorización y realiza una solicitud a un dominio de identidad para intercambiar el código de autorización por un token de acceso.
Ejemplo de solicitud: cliente confidencial/confidencial
curl -i -H 'Authorization: Basic <base64-clientid-secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-code>'
Ejemplo de solicitud: cliente público
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-code>&redirect_uri=<client-redirect-uri>&client_id=<client-id>'
Ejemplo de solicitud usando PKCE
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-cod>e&redirect_uri=<client-redirect-uri>&client_id=<client-id>&code_verifier=<code-verifier>'
-
IAM valida los datos de permiso y usuario asociados al código (
client_id, client_secret
y el código de autorización). -
Se devuelve un token de acceso y un token de identidad. El token de acceso contiene información sobre los ámbitos que la aplicación Customer Quotes puede solicitar en nombre del usuario. La aplicación puede utilizar este token al solicitar API en nombre del usuario.
El token de identidad solo se recupera cuando solicita el ámbito
openid
. Este token contiene información de identificación sobre el usuario y se utiliza para la autenticación federada. -
La aplicación Customer Quotes procesa
id_token
y, a continuación, extrae la información del usuario devuelta de IAM. -
Customer Quotes muestra la página de inicio que contiene información sobre el usuario.