El uso PKCE en el código de autorización se otorga con grupos de usuarios de Amazon Cognito - Amazon Cognito

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

El uso PKCE en el código de autorización se otorga con grupos de usuarios de Amazon Cognito

Amazon Cognito admite la autenticación con clave de prueba para Code Exchange (PKCE) en las concesiones de códigos de autorización. PKCEes una extensión de la concesión de códigos de autorización OAuth 2.0 para clientes públicos. PKCEevita el canje de los códigos de autorización interceptados.

Cómo usa Amazon Cognito PKCE

Para iniciar la autenticaciónPKCE, la aplicación debe generar un valor de cadena único. Esta cadena es el verificador de código, un valor secreto que Amazon Cognito utiliza para comparar el cliente que solicita la concesión de autorización inicial con el cliente que intercambia el código de autorización por tokens.

La aplicación debe aplicar un SHA256 hash a la cadena del verificador de código y codificar el resultado en base64. Pasa la cadena cifrada a Autorizar punto de conexión como code_challenge parámetro en el cuerpo de la solicitud. Cuando tu aplicación intercambie el código de autorización por tokens, debe incluir la cadena verificadora de código en texto simple como code_verifier parámetro en el cuerpo de la solicitud. Punto de conexión de token Amazon Cognito realiza la misma hash-and-encode operación en el verificador de código. Amazon Cognito solo devuelve los tokens de ID, acceso y actualización si determina que el verificador de código genera el mismo desafío de código que recibió en la solicitud de autorización.

Para implementar Authorization Grant Flow con PKCE
  1. Abra la consola de Amazon Cognito. Si se le solicita, introduzca sus AWS credenciales.

  2. Elija User Pools (Grupos de usuarios).

  3. Elija un grupo de usuarios existente en la lista o cree un grupo de usuarios. Si crea un grupo de usuarios, se le pedirá que configure un cliente de aplicaciones y que configure la interfaz de usuario alojada durante el asistente.

    1. Si crea un nuevo grupo de usuarios, configure un cliente de aplicaciones y configure la interfaz de usuario alojada durante la configuración guiada.

    2. Si configura un grupo de usuarios existente, añada un dominio y un cliente de aplicación pública, si aún no lo ha hecho.

  4. Genere una cadena alfanumérica aleatoria, normalmente un identificador único universal (UUID), para crear un desafío de código para elPKCE. Esta cadena es el valor del code_verifier parámetro que enviará en su solicitud a. Punto de conexión de token

  5. Aplica un hash a la code_verifier cadena con el SHA256 algoritmo. Codifica el resultado de la operación de hash en base64. Esta cadena es el valor del code_challenge parámetro que enviará en su solicitud a. Autorizar punto de conexión

    En el siguiente Python ejemplo se genera un code_verifier y se calcula elcode_challenge:

    #!/usr/bin/env python3 import random from base64 import urlsafe_b64encode from hashlib import sha256 from string import ascii_letters from string import digits # use a cryptographically strong random number generator source rand = random.SystemRandom() code_verifier = ''.join(rand.choices(ascii_letters + digits, k=128)) code_verifier_hash = sha256(code_verifier.encode()).digest() code_challenge = urlsafe_b64encode(code_verifier_hash).decode().rstrip('=') print(f"code challenge: {code_challenge}") print(f"code verifier: {code_verifier}")

    El siguiente es un ejemplo de resultado del Python script:

    code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
  6. Complete el inicio de sesión en la interfaz de usuario alojada con una solicitud de concesión de código de autorización conPKCE. A continuación se muestra un ejemploURL:

    https://mydomain.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com&code_challenge=Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg&code_challenge_method=S256
  7. Recopile la autorización code y canjéela por fichas con el punto final del token. A continuación, se muestra un ejemplo de solicitud:

    POST /oauth2/token HTTP/1.1 Host: mydomain.us-east-1.amazoncognito.com Content-Type: application/x-www-form-urlencoded Content-Length: 296 redirect_uri=https%3A%2F%2Fwww.example.com& client_id=1example23456789& code=7378f445-c87f-400c-855e-0297d072ff03& grant_type=authorization_code& code_verifier=9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
  8. Revisa la respuesta. Contendrá los identificadores de identificación, acceso y actualización. Para obtener más información sobre el uso de los tokens de grupos de usuarios de Amazon Cognito, consulte. Uso de tokens con grupos de usuarios