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 otorga
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 del OAuth Concesión del código de autorización 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
-
Abra la consola de Amazon Cognito
. Si se le solicita, introduzca sus AWS credenciales. -
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 la interfaz de usuario alojada durante el asistente.
-
Si crea un nuevo grupo de usuarios, configure un cliente de aplicaciones y configure la interfaz de usuario alojada durante la configuración guiada.
-
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.
-
-
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 -
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 delcode_challenge
parámetro que enviará en su solicitud a. Autorizar punto de conexiónLos 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 secuencia de comandos:
code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
-
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 -
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
-
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. Descripción de los tokens JSON web de grupos de usuarios (JWTs)