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.

Diagrama que ilustra el flujo de tipo de concesión de código de autorización.
En este flujo OAuth:
  1. Un usuario hace clic en un enlace de una aplicación cliente de servidor web y solicita acceso a recursos protegidos.

  2. 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.

  3. 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.

  4. 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.

  5. El servidor de autorización devuelve el token de acceso a la aplicación cliente.

  6. 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
Puede utilizar un proveedor de identidad externo para la autenticación
Se permite el token de refrescamiento
El token de acceso está en el contexto del usuario final

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

  1. Un usuario hace clic en un enlace de la aplicación cliente del servidor web (ofertas de cliente), solicitando acceso a recursos protegidos.

  2. 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>'
  3. 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 (ámbito openid).)

  4. Si el usuario aún no está conectado, IAM reta al usuario a autenticarse. IAM comprueba las credenciales del usuario.

  5. 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.
  6. 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>'
  7. IAM valida los datos de permiso y usuario asociados al código (client_id, client_secret y el código de autorización).

  8. 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.

  9. La aplicación Customer Quotes procesa id_token y, a continuación, extrae la información del usuario devuelta de IAM.

  10. Customer Quotes muestra la página de inicio que contiene información sobre el usuario.