Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo delle concessioni di codice PKCE di autorizzazione
Amazon Cognito supporta l'autenticazione Proof Key for Code Exchange (PKCE) nelle concessioni di codici di autorizzazione. PKCEè un'estensione del OAuth concessione del codice di autorizzazione 2.0 per clienti pubblici. PKCEprotegge dal riscatto dei codici di autorizzazione intercettati.
Come utilizza Amazon Cognito PKCE
Per iniziare l'autenticazionePKCE, l'applicazione deve generare un valore di stringa univoco. Questa stringa è il verificatore del codice, un valore segreto che Amazon Cognito utilizza per confrontare il client che richiede la concessione di autorizzazione iniziale con il client che scambia il codice di autorizzazione in token.
L'app deve applicare un SHA256 hash alla stringa del verificatore del codice e codificare il risultato in base64. Passa la stringa con hash a Endpoint Authorize come parametro nel corpo della richiesta. code_challenge
Quando l'app scambia il codice di autorizzazione in cambio di token, deve includere la stringa del verificatore del codice in testo semplice come code_verifier
parametro nel corpo della richiesta a. Endpoint Token Amazon Cognito esegue la stessa hash-and-encode operazione sul verificatore di codice. Amazon Cognito restituisce ID, accesso e token di aggiornamento solo se determina che il verificatore del codice genera la stessa richiesta di codice ricevuta nella richiesta di autorizzazione.
Per implementare Authorization Grant Flow con PKCE
-
Apri la console Amazon Cognito
. Se richiesto, inserisci le tue AWS credenziali. -
Scegli User Pools (Pool di utenti).
-
Scegli un bacino d'utenza esistente dall'elenco o creane uno nuovo. Se crei un pool di utenti, durante la procedura guidata ti verrà richiesto di configurare un client per l'app e configurare l'interfaccia utente ospitata.
-
Se crei un nuovo pool di utenti, configura un client di app e configura l'interfaccia utente ospitata durante la configurazione guidata.
-
Se configuri un pool di utenti esistente, aggiungi un dominio e un client di app pubblico, se non l'hai già fatto.
-
-
Genera una stringa alfanumerica casuale, in genere un identificatore univoco universale (UUID), per creare una sfida di codice per. PKCE Questa stringa è il valore del
code_verifier
parametro che invierai nella richiesta a. Endpoint Token -
Effettua l'hash della
code_verifier
stringa con l'SHA256algoritmo. Codifica il risultato dell'operazione di hashing in base64. Questa stringa è il valore delcode_challenge
parametro che verrà inviato nella richiesta a. Endpoint AuthorizeI seguenti Python esempio genera un
code_verifier
e calcola: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}")
Di seguito è riportato un esempio di output da Python sceneggiatura:
code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
-
Completa l'accesso all'interfaccia utente ospitata con una richiesta di concessione del codice di autorizzazione conPKCE. Di seguito è riportato un esempioURL:
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 -
Raccogli l'autorizzazione
code
e riscattala in token con l'endpoint del token. Di seguito è riportato un esempio di richiesta: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
-
Esamina la risposta. Conterrà ID, accesso e token di aggiornamento. Per ulteriori informazioni sull'utilizzo dei token del pool di utenti di Amazon Cognito, consulta. Comprensione dei token JSON web del pool di utenti () JWTs