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á.
Fluxo de autenticação dos bancos de identidades
O Amazon Cognito ajuda você a criar identificadores exclusivos para seus usuários finais que são mantidos consistentes em diversos dispositivos e plataformas. O Amazon Cognito também fornece credenciais temporárias com privilégios limitados ao seu aplicativo para acessar recursos. AWS Esta página aborda as noções básicas de como funciona a autenticação no Amazon Cognito e explica o ciclo de vida de uma identidade no grupo de identidades.
Fluxo de autenticação de provedor externo
Uma autenticação de usuário com o Amazon Cognito passará por um processo de várias etapas para fazer bootstrap das respectivas credenciais. O Amazon Cognito tem dois fluxos diferentes para autenticação com provedores públicos: aprimorado e básico.
Depois de concluir um desses fluxos, você pode acessar outros Serviços da AWS conforme definido pelas políticas de acesso da sua função. Por padrão, o console do Amazon Cognito
Os bancos de identidades aceitam os seguintes artefatos dos provedores:
Provedor | Artefato de autenticação |
---|---|
Conjunto de usuários do Amazon Cognito | Token de ID |
OpenID Connect (OIDC) | Token de ID |
SAML 2.0 | Declaração SAML |
Provedor social | Token de acesso |
Fluxo de autenticação aprimorado (simplificado)
Quando você usa o fluxo de autenticação aprimorado, seu aplicativo primeiro apresenta uma prova de autenticação de um grupo de usuários autorizado do Amazon Cognito ou de um provedor de identidade terceirizado em GetIduma solicitação.
-
Sua aplicação apresenta uma prova de autenticação: um token JSON da web ou uma declaração SAML de um grupo de usuários autorizado do Amazon Cognito ou provedor de identidades de terceiros em uma solicitação GetID.
-
Seu banco de identidades retorna um ID de identidade.
-
Seu aplicativo combina o ID de identidade com o mesmo comprovante de autenticação em uma GetCredentialsForIdentitysolicitação.
-
Seu pool de identidade retorna AWS credenciais.
-
Seu aplicativo assina solicitações de AWS API com as credenciais temporárias.
A autenticação aprimorada gerencia a lógica da seleção de perfil do IAM e da recuperação de credenciais na configuração do seu banco de identidades. Você pode configurar o banco de identidades para selecionar uma função padrão, para aplicar os princípios de controle de acesso por atributo (ABAC) ou controle de acesso por função (RBAC) à seleção de função. As AWS credenciais da autenticação avançada são válidas por uma hora.
Ordem das operações na autenticação aprimorada
-
GetId
-
GetCredentialsForIdentity

Fluxo de autenticação básico (clássico)
Quando você usa o fluxo de autenticação básico,
-
Sua aplicação apresenta uma prova de autenticação: um token JSON da web ou uma declaração SAML de um grupo de usuários autorizado do Amazon Cognito ou provedor de identidades de terceiros em uma solicitação GetID.
-
Seu banco de identidades retorna um ID de identidade.
-
Seu aplicativo combina o ID de identidade com o mesmo comprovante de autenticação em uma GetOpenIdTokensolicitação.
-
GetOpenIdToken
retorna um novo token OAuth 2.0 emitido pelo seu grupo de identidades. -
Seu aplicativo apresenta o novo token em uma AssumeRoleWithWebIdentitysolicitação.
-
AWS Security Token Service (AWS STS) retorna AWS as credenciais.
-
Seu aplicativo assina solicitações de AWS API com as credenciais temporárias.
O fluxo de trabalho básico oferece um controle mais detalhado sobre as credenciais que você distribui aos seus usuários. A solicitação GetCredentialsForIdentity
do fluxo de autenticação aprimorado solicita uma função com base no conteúdo de um token de acesso. A AssumeRoleWithWebIdentity
solicitação no fluxo de trabalho clássico concede ao seu aplicativo uma maior capacidade de solicitar credenciais para qualquer AWS Identity and Access Management função que você tenha configurado com uma política de confiança suficiente. Você também pode solicitar uma duração de sessão de perfil personalizado.
Você pode fazer login com o fluxo de autenticação básico em grupos de usuários que não têm mapeamentos de perfil. Esse tipo de banco de identidades não tem um perfil padrão autenticado ou não autenticado e não tem controle de acesso por função ou atributo configurado. Ao tentar GetOpenIdToken
em um banco de identidades com mapeamentos de perfil, você recebe o seguinte erro.
Basic (classic) flow is not supported with RoleMappings, please use enhanced flow.
Ordem das operações na autenticação básica
-
GetId
-
GetOpenIdToken
-
AssumeRoleWithWebIdentity

Fluxo de autenticação de identidades autenticadas pelo desenvolvedor
Ao usar Identidades autenticadas pelo desenvolvedor, o cliente utilizará outro fluxo de autenticação que incluirá o código fora do Amazon Cognito para validar o usuário em seu próprio sistema de autenticação. O código fora do Amazon Cognito é apropriadamente indicado.
Fluxo de autenticação aprimorado
Ordem das operações na autenticação aprimorada com um provedor de desenvolvedores
-
Faça login por meio do provedor do desenvolvedor (código fora do Amazon Cognito)
-
Valide o login do usuário (código fora do Amazon Cognito).

Ordem das operações na autenticação básica com um provedor desenvolvedor
-
Implemente a lógica fora do banco de identidades para fazer login e gerar um identificador de provedor desenvolvedor.
-
Recupere as credenciais armazenadas do lado do servidor AWS .
-
Envie o identificador do provedor do desenvolvedor em uma solicitação de GetOpenIdTokenForDeveloperIdentityAPI assinada com AWS credenciais autorizadas.
-
Solicite as credenciais do aplicativo com AssumeRoleWithWebIdentity.

Qual fluxo de autenticação devo usar?
O fluxo aprimorado é a opção mais segura com o menor nível de esforço do desenvolvedor:
-
O fluxo aprimorado reduz a complexidade, o tamanho e a taxa das solicitações de API.
-
Sua aplicação não precisa fazer solicitações adicionais de API para o AWS STS.
-
Seu banco de identidades avalia as credenciais de perfil do IAM que os usuários devem receber. Você não precisa incorporar lógica para seleção de perfil no cliente.
Importante
Ao criar um banco de identidades, não ative a autenticação básica (clássica) por padrão, como prática recomendada. Para implementar a autenticação básica, primeiro avalie as relações de confiança de seus perfis do IAM para identidades da web. Em seguida, incorpore a lógica para seleção de perfis no cliente, protegendo-o contra modificações dos usuários.
O fluxo de autenticação básica delega a lógica da seleção de perfil do IAM à sua aplicação. Nesse fluxo, o Amazon Cognito valida a sessão autenticada ou não autenticada do seu usuário e emite um token com o qual você pode trocar por credenciais. AWS STS Os usuários podem trocar os tokens da autenticação básica por qualquer perfil do IAM que confie no banco de identidades e em amr
, ou em seu estado autenticado/não autenticado.
Da mesma forma, entenda que a autenticação do desenvolvedor é um atalho para a validação da autenticação do provedor de identidades. O Amazon Cognito confia nas AWS credenciais que autorizam uma GetOpenIdTokenForDeveloperIdentitysolicitação sem validação adicional do conteúdo da solicitação. Proteja os segredos que autorizam a autenticação do desenvolvedor para que os usuários não tenham acesso.
Resumo de APIs
- GetId
-
A chamada de API GetId é a primeira chamada necessária para estabelecer uma nova identidade no Amazon Cognito.
- Acesso não autenticado
-
O Amazon Cognito pode conceder acesso de convidado não autenticado às aplicações. Se esse recurso for habilitado no grupo de identidades, os usuários poderão solicitar um novo ID de identidade a qualquer momento por meio da API
GetId
. Espera-se que a aplicação armazene em cache esse ID de identidade para fazer chamadas subsequentes para o Amazon Cognito. O AWS Mobile SDKs e o AWS SDK do Browser têm provedores de credenciais que gerenciam esse armazenamento em cache para você. JavaScript - Acesso autenticado
-
Quando você configura seu aplicativo com suporte para um provedor de login público (Facebook, Google+, Login with Amazon ou Sign in with Apple), os usuários também podem fornecer tokens (ou OAuth OpenID Connect) que os identificam nesses provedores. Quando for usado em uma chamada para
GetId
, o Amazon Cognito criará uma identidade autenticada ou retornará a identidade já associada a esse login específico. O Amazon Cognito faz isso validando o token com o provedor e garantindo que:-
O token seja válido e proveniente do provedor configurado.
-
O token não tenha expirado.
-
O token corresponde ao identificador de aplicação criado com esse provedor (por exemplo, ID do aplicativo do Facebook)
-
O token corresponda ao identificador de usuário.
-
- GetCredentialsForIdentity
-
A API GetCredentialsForIdentity pode ser chamada depois que você estabelecer um ID de identidade. Essa operação é funcionalmente equivalente a chamar GetOpenIdToken, então AssumeRoleWithWebIdentity.
Para que o Amazon Cognito chame
AssumeRoleWithWebIdentity
em seu nome, seu grupo de identidades deve ter funções do IAM associadas a ele. Você pode fazer isso por meio do console do Amazon Cognito ou, manualmente, pela operação SetIdentityPoolRoles. - GetOpenIdToken
-
Faça uma solicitação de API GetOpenIdToken depois de estabelecer um ID de identidade. Armazene a identidade em cache IDs após sua primeira solicitação e inicie as sessões básicas (clássicas) subsequentes dessa identidade com
GetOpenIdToken
.A resposta a uma solicitação de API
GetOpenIdToken
é um token gerado pelo Amazon Cognito. Você pode enviar esse token como parâmetroWebIdentityToken
em uma solicitação AssumeRoleWithWebIdentity.Antes de enviar o token OpenID, verifique-o na aplicação. Você pode usar bibliotecas OIDC em seu SDK ou uma biblioteca como aws-jwt-verify
para confirmar que o Amazon Cognito emitiu o token. O ID da chave de assinatura, ou kid
, do token OpenID é um dos listados na Identidade do Amazon Cognito jwks_uri documento†. Essas chaves estão sujeitas a alterações. Sua função que verifica os tokens do Amazon Cognito Identity deve atualizar periodicamente sua lista de chaves do documento jwks_uri. O Amazon Cognito define a duração da atualização no cabeçalho de resposta de controle de cache jwks_uri, atualmente definido como max-age
de 30 dias.- Acesso não autenticado
-
Para obter um token para uma identidade não autenticada, você só precisa do próprio ID de identidade. Não é possível obter um token não autenticado para identidades autenticadas ou desativadas.
- Acesso autenticado
-
Se você tem uma identidade autenticada, deve inserir ao menos um token válido para um login já associado a essa identidade. Todos os tokens inseridos durante a chamada de
GetOpenIdToken
devem passar na mesma validação mencionada anteriormente; se houver falha em um deles, toda a chamada falhará. A resposta da chamada deGetOpenIdToken
também inclui o ID de identidade. Isso ocorre porque o ID de identidade que você insere pode não ser o retornado. - Como vincular logins
-
Se você inserir um token referente a um login que ainda não está associado a nenhuma identidade, o login será considerado "vinculado" à identidade associada. Você só pode vincular um login por provedor de público. Tentativas de vincular mais de um login a um provedor público gerará uma resposta de erro
ResourceConflictException
. Se um login for meramente vinculado a uma identidade existente, o ID de identidade retornado porGetOpenIdToken
será o mesmo que foi inserido. - Como mesclar identidades
-
Se você inserir um token referente a um login que não está atualmente vinculado à identidade fornecida, mas está vinculado a outra identidade, as duas identidades serão mescladas. Depois de mesclada, uma identidade se torna a ser parent/owner of all associated logins and the other is disabled. In this case, the identity ID of the parent/owner retornada. Você deverá atualizar seu cache local se esse valor for diferente. Os provedores no AWS celular SDKs ou JavaScript no AWS SDK do navegador realizam essa operação para você.
- GetOpenIdTokenForDeveloperIdentity
-
A GetOpenIdTokenForDeveloperIdentityoperação substitui o uso GetOpenIdTokende GetIde para o dispositivo ao usar identidades autenticadas pelo desenvolvedor. Como seu aplicativo assina solicitações para essa operação de API com AWS credenciais, o Amazon Cognito confia que o identificador de usuário fornecido na solicitação é válido. A autenticação do desenvolvedor substitui a validação de token que o Amazon Cognito executa junto aos provedores externos.
A carga útil dessa API inclui um mapa de
logins
. Esse mapa deve conter a chave de seu provedor de desenvolvedor e um valor como identificador do usuário no sistema. Se o identificador de usuário ainda não estiver vinculado a uma identidade existente, o Amazon Cognito criará uma identidade e retornará o ID da nova identidade e um token do OpenID Connect para ela. Se o identificador de usuário já estiver vinculado, o Amazon Cognito retornará o ID de identidade preexistente e um token do OpenID Connect. Armazene em cache IDs a identidade do desenvolvedor após sua primeira solicitação e inicie as sessões básicas (clássicas) subsequentes dessa identidade comGetOpenIdTokenForDeveloperIdentity
.A resposta a uma solicitação de API
GetOpenIdTokenForDeveloperIdentity
é um token gerado pelo Amazon Cognito. Você pode enviar esse token como parâmetroWebIdentityToken
em uma solicitaçãoAssumeRoleWithWebIdentity
.Antes de enviar o token do OpenID Connect, verifique-o na aplicação. Você pode usar bibliotecas OIDC em seu SDK ou uma biblioteca como aws-jwt-verify
para confirmar que o Amazon Cognito emitiu o token. O ID da chave de assinatura ou kid
do token do OpenID Connect é um dos listados no documento jwks_uri do Amazon Cognito Identity†. Essas chaves estão sujeitas a alterações. Sua função que verifica os tokens do Amazon Cognito Identity deve atualizar periodicamente sua lista de chaves do documento jwks_uri. O Amazon Cognito define a duração da atualização no cabeçalho de resposta jwks_uri cache-control
, atualmente definido comomax-age
de 30 dias.- Como vincular logins
-
Assim como ocorre com os provedores externos, o fornecimento de logins adicionais que ainda não estão associados a uma identidade os vinculará implicitamente a essa identidade. Se você vincular um login de provedor externo a uma identidade, o usuário poderá usar o fluxo de autenticação do provedor externo com esse provedor. No entanto, ele não pode usar o nome de seu provedor de desenvolvedor no mapa de logins ao chamar
GetId
ouGetOpenIdToken
. - Como mesclar identidades
-
Quando as identidades são autenticadas pelo desenvolvedor, o Amazon Cognito comporta mesclagens implícitas e explícitas por meio da API MergeDeveloperIdentities. Com a mesclagem explícita, você pode marcar duas identidades com identificadores de usuário em seu sistema como uma única identidade. Se você fornecer os identificadores de usuário de origem e de destino, o Amazon Cognito os mesclará. Na próxima vez em que você solicitar um token do OpenID Connect para um dos identificadores de usuário, a mesma identidade será retornada.
- AssumeRoleWithWebIdentity
-
Depois de ter um token do OpenID Connect, você pode trocá-lo por AWS credenciais temporárias por meio da solicitação da AssumeRoleWithWebIdentityAPI para AWS Security Token Service ().AWS STS
Como não há nenhuma restrição quanto ao número de identidades que podem ser criadas, é importante compreender as permissões que estão sendo concedidas aos usuários. Configure perfis diferentes do IAM para a aplicação: um para usuários não autenticados e outro para usuários autenticados. O console do Amazon Cognito os criará para você por padrão quando configurar seu banco de identidades pela primeira vez. Esses perfis efetivamente não têm permissões concedidas. Modifique-os de acordo com as suas necessidades.
Saiba mais sobre Permissões e confiança de função.
† O documento jwks_uri
Região da AWS | Caminho para o documento jwks_uri |
---|---|
AWS GovCloud (Oeste dos EUA) | https://cognito-identity.us-gov-west-1.amazonaws.com/.well-known/jwks_uri |
China (Pequim) | https://cognito-identity---cn-north-1.amazonaws.com.rproxy.goskope.com.cn/.well-known/jwks_uri |
Regiões opcionais como Europa (Milão) e África (Cidade do Cabo) | https://cognito-identity. |
Você também pode extrapolar o jwks_uri do emissor ou iss
que você recebe no token do OpenID do Amazon Cognito. O endpoint de descoberta padrão do OIDC <issuer>/.well-known/openid-configuration
lista um caminho para o jwks_uri de seu token.