As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usando PKCE em concessões de código de autorização
O Amazon Cognito oferece suporte à autenticação Proof Key for Code Exchange (PKCE) em concessões de códigos de autorização. PKCEé uma extensão do OAuth Concessão de código de autorização 2.0 para clientes públicos. PKCEprotege contra o resgate de códigos de autorização interceptados.
Como o Amazon Cognito usa PKCE
Para iniciar a autenticaçãoPKCE, seu aplicativo deve gerar um valor de string exclusivo. Essa string é o verificador de código, um valor secreto que o Amazon Cognito usa para comparar o cliente que está solicitando a concessão de autorização inicial com o cliente que está trocando o código de autorização por tokens.
Seu aplicativo deve aplicar um SHA256 hash à string do verificador de código e codificar o resultado em base64. Passe a string com hash para o Autorizar endpoint como um code_challenge
parâmetro no corpo da solicitação. Quando seu aplicativo troca o código de autorização por tokens, ele deve incluir a string do verificador de código em texto simples como um code_verifier
parâmetro no corpo da solicitação para o. Endpoint de token O Amazon Cognito executa a mesma hash-and-encode operação no verificador de código. O Amazon Cognito só retornará tokens de ID, acesso e atualização se determinar que o verificador de código resulta no mesmo desafio de código recebido na solicitação de autorização.
Para implementar o fluxo de concessão de autorização com PKCE
-
Abra o console do Amazon Cognito
. Se solicitado, insira suas AWS credenciais. -
Escolha User Pools (Grupos de usuários).
-
Escolha um grupo de usuários existente na lista ou crie um grupo de usuários. Se você criar um grupo de usuários, você será solicitado a configurar um cliente de aplicativo e configurar a interface de usuário hospedada durante o assistente.
-
Se você criar um novo grupo de usuários, configure um cliente de aplicativo e configure a interface hospedada durante a configuração guiada.
-
Se você configurar um grupo de usuários existente, adicione um domínio e um cliente de aplicativo público, caso ainda não tenha feito isso.
-
-
Gere uma sequência alfanumérica aleatória, normalmente um identificador universalmente exclusivo (UUID), para criar um desafio de código para o. PKCE Essa string é o valor do
code_verifier
parâmetro que você enviará em sua solicitação para Endpoint de token o. -
Faça o hash da
code_verifier
string com o SHA256 algoritmo. Codifique o resultado da operação de hashing para base64. Essa string é o valor docode_challenge
parâmetro que você enviará em sua solicitação para Autorizar endpoint o.Os seguintes exemplos de Python exemplo gera um
code_verifier
e calcula ocode_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}")
A seguir está um exemplo de saída do Python roteiro:
code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
-
Conclua o login na interface de usuário hospedada com uma solicitação de concessão de código de autorização com. PKCE Veja a seguir um exemploURL:
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 -
Colete a autorização
code
e troque-a por tokens com o endpoint do token. Veja a seguir uma solicitação de exemplo: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
-
Analise a resposta. Ele conterá tokens de ID, acesso e atualização. Para obter mais informações sobre o uso de tokens do grupo de usuários do Amazon Cognito, consulte. Entendendo os tokens JSON da web do pool de usuários (JWTs)