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.
Uso de la PKCE en las concesiones de códigos de autorización
Amazon Cognito admite la autenticación con clave de prueba para el intercambio de códigos (PKCE) en las concesiones de códigos de autorización. PKCE es una extensión de OAuth Concesión del código de autorización 2.0 para clientes públicos. Este tipo de autenticación evita que se canjeen códigos de autorización interceptados.
Cómo utiliza Amazon Cognito la PKCE
Para iniciar la autenticación con la PKCE, 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.
Tu aplicación debe aplicar un SHA256 hash a la cadena del verificador de código y codificar el resultado en base64. Pase la cadena hash al Autorizar punto de conexión como parámetro code_challenge
en el cuerpo de la solicitud. Cuando la aplicación intercambie el código de autorización por tokens, debe incluir la cadena verificadora de código en texto simple como parámetro code_verifier
en el cuerpo de la solicitud al 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 concluye que el verificador de código genera el mismo desafío de código que ha recibido en la solicitud de autorización.
Implementación del flujo de concesión de autorizaciones con la PKCE
-
Abra la consola de Amazon Cognito
. Si se le solicita, introduzca sus credenciales. AWS -
Elija User Pools (Grupos de usuarios).
-
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 el inicio de sesión administrado durante el asistente.
-
Si crea un nuevo grupo de usuarios, configure un cliente de aplicaciones y configure el inicio de sesión administrado durante la configuración guiada.
-
Si configura un grupo de usuarios ya existente, añada un dominio y un cliente de aplicación público, si aún no lo ha hecho.
-
-
Genere una cadena alfanumérica aleatoria, normalmente un identificador único universal (UUID), para crear un desafío de código para la PKCE. Esta cadena es el valor del parámetro
code_verifier
que enviará en la solicitud al Punto de conexión de token. -
Aplica un hash a la
code_verifier
cadena con el SHA256 algoritmo. Codifique el resultado de la operación de hash en base64. Esta cadena es el valor del parámetrocode_challenge
que enviará en la solicitud al Autorizar punto de conexión.Los siguientes ejemplos de Python El ejemplo genera un
code_verifier
y calculacode_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 salida del Python guión:
code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
-
Complete el inicio de sesión gestionado con una solicitud de concesión de código de autorización a PKCE. A continuación se muestra un ejemplo de URL:
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 -
Obtenga la autorización
code
y canjéela por tokens con el punto de conexión 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
-
Revise la respuesta. Contendrá tokens de ID, acceso y actualización. Para obtener más información sobre el uso de tokens de grupos de usuarios de Amazon Cognito, consulte Descripción de los tokens web JSON para grupos de usuarios (JWTs).