Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
L'utilisation PKCE dans le code d'autorisation octroie
Amazon Cognito prend en charge l'authentification par clé de preuve pour l'échange de code (PKCE) lors de l'attribution de codes d'autorisation. PKCEest une extension du OAuth Octroi de code d'autorisation 2.0 pour les clients publics. PKCEprotège contre le rachat de codes d'autorisation interceptés.
Comment Amazon Cognito utilise PKCE
Pour démarrer l'authentificationPKCE, votre application doit générer une valeur de chaîne unique. Cette chaîne est le vérificateur de code, une valeur secrète qu'Amazon Cognito utilise pour comparer le client demandant l'autorisation initiale au client échangeant le code d'autorisation contre des jetons.
Votre application doit appliquer un SHA256 hachage à la chaîne du vérificateur de code et encoder le résultat en base64. Passez la chaîne hachée en Point de terminaison d’autorisation tant que code_challenge
paramètre dans le corps de la demande. Lorsque votre application échange le code d'autorisation contre des jetons, elle doit inclure la chaîne du vérificateur de code en texte brut en tant que code_verifier
paramètre dans le corps de la demande au. Point de terminaison de jeton Amazon Cognito effectue la même hash-and-encode opération sur le vérificateur de code. Amazon Cognito ne renvoie les jetons d'identification, d'accès et d'actualisation que s'il détermine que le vérificateur de code génère le même défi de code que celui qu'il a reçu dans la demande d'autorisation.
Pour implémenter Authorization Grant Flow avec PKCE
-
Ouvrez la console Amazon Cognito
. Si vous y êtes invité, entrez vos AWS informations d'identification. -
Choisissez Groupes d’utilisateurs.
-
Choisissez un groupe d’utilisateurs existant dans la liste ou créez-en un. Si vous créez un groupe d'utilisateurs, vous serez invité à configurer un client d'application et à configurer l'interface utilisateur hébergée pendant l'assistant.
-
Si vous créez un nouveau groupe d'utilisateurs, configurez un client d'application et configurez l'interface utilisateur hébergée lors de la configuration guidée.
-
Si vous configurez un groupe d'utilisateurs existant, ajoutez un domaine et un client d'application public, si ce n'est pas déjà fait.
-
-
Générez une chaîne alphanumérique aléatoire, généralement un identifiant unique universel (UUID), afin de créer un défi de code pour lePKCE. Cette chaîne est la valeur du
code_verifier
paramètre que vous soumettrez dans votre demande auPoint de terminaison de jeton. -
Hachez la
code_verifier
chaîne à l'aide de l'SHA256algorithme. Codez le résultat de l'opération de hachage en base64. Cette chaîne est la valeur ducode_challenge
paramètre que vous soumettrez dans votre demande auPoint de terminaison d’autorisation.Procédez comme suit : Python l'exemple génère un
code_verifier
et calcule :code_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}")
Voici un exemple de sortie du Python scénario :
code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
-
Connectez-vous à l'interface utilisateur hébergée avec une demande d'octroi de code d'autorisation avecPKCE. Voici un exemple 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 -
Collectez l'autorisation
code
et échangez-la contre des jetons avec le point de terminaison du jeton. Voici un exemple de demande :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
-
Passez en revue la réponse. Il contiendra des jetons d'identification, d'accès et d'actualisation. Pour plus d'informations sur l'utilisation des jetons du pool d'utilisateurs Amazon Cognito, consultez. Comprendre les jetons JSON Web du pool d'utilisateurs (JWTs)