Como a autenticação funciona com grupos de usuários e grupos de identidades do Amazon Cognito - Amazon Cognito

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á.

Como a autenticação funciona com grupos de usuários e grupos de identidades do Amazon Cognito

Quando seu cliente faz login em um grupo de usuários do Amazon Cognito, seu aplicativo recebe tokens web JSON (JWTs).

Quando seu cliente faz login em um grupo de identidades, seja com um token de grupo de usuários ou outro provedor, seu aplicativo recebe AWS credenciais temporárias.

Com o login do grupo de usuários, você pode implementar a autenticação e a autorização inteiramente com um AWS SDK. Se você não quiser criar seus próprios componentes de interface de usuário (UI), você pode invocar uma interface web pré-criada (a interface hospedada) ou a página de login do seu provedor de identidade (IdP) terceirizado.

Este tópico é uma visão geral de algumas maneiras pelas quais seu aplicativo pode interagir com o Amazon Cognito para se autenticar com tokens de ID, autorizar com tokens de acesso e acessar com credenciais do grupo de identidades Serviços da AWS .

Autenticação e autorização da API do grupo de usuários com um AWS SDK

AWS desenvolveu componentes para grupos de usuários do Amazon Cognito, ou provedor de identidade do Amazon Cognito, em uma variedade de estruturas de desenvolvedores. Os métodos incorporados nesses SDKs chamam a API de grupos de usuários do Amazon Cognito. O mesmo namespace da API de grupos de usuários tem operações para configuração de grupos de usuários e para autenticação de usuários. Para uma visão geral mais completa, consulteUsar a API de grupos de usuários e endpoints de grupo de usuários do Amazon Cognito.

A autenticação de API se ajusta ao modelo em que seus aplicativos têm componentes de interface de usuário existentes e dependem principalmente do grupo de usuários como um diretório de usuários. Esse design adiciona o Amazon Cognito como um componente dentro de um aplicativo maior. Ela exige lógica programática para lidar com cadeias complexas de desafios e respostas.

Esse aplicativo não precisa implementar uma implementação completa de terceiros confiáveis do OpenID Connect (OIDC). Em vez disso, ele tem a capacidade de decodificar e usar JWTs. Quando você quiser acessar o conjunto completo de recursos do grupo de usuários para usuários locais, crie sua autenticação com o SDK do Amazon Cognito em seu ambiente de desenvolvimento.

A autenticação de API com escopos OAuth personalizados é menos orientada para a autorização de API externa. Para adicionar escopos personalizados a um token de acesso a partir da autenticação da API, modifique o token em tempo de execução com umAcionador do Lambda antes da geração do token.

O diagrama a seguir ilustra uma sessão de login típica para autenticação de API.

Um fluxograma que mostra um aplicativo que solicita a entrada do usuário e faz login com um AWS SDK.
Fluxo de autenticação da API
  1. Um usuário acessa seu aplicativo.

  2. Eles selecionam um link “Fazer login”.

  3. Eles inserem seu nome de usuário e senha.

  4. O aplicativo invoca o método que faz uma solicitação de InitiateAuthAPI. A solicitação passa as credenciais do usuário para um grupo de usuários.

  5. O grupo de usuários valida as credenciais do usuário e determina se o usuário ativou a autenticação multifator (MFA).

  6. O grupo de usuários responde com um desafio que solicita um código de MFA.

  7. O aplicativo gera um prompt que coleta o código MFA do usuário.

  8. O aplicativo invoca o método que faz uma solicitação de RespondToAuthChallengeAPI. A solicitação passa o código MFA do usuário.

  9. O grupo de usuários valida o código MFA do usuário.

  10. O grupo de usuários responde com os JWTs do usuário.

  11. O aplicativo decodifica, valida e armazena ou armazena em cache os JWTs do usuário.

  12. O aplicativo exibe o componente de controle de acesso solicitado.

  13. O usuário visualiza seu conteúdo.

  14. Posteriormente, o token de acesso do usuário expirou e ele solicitou a visualização de um componente de acesso controlado.

  15. O aplicativo determina que a sessão do usuário deve persistir. Ele invoca o InitiateAuthmétodo novamente com o token de atualização e recupera novos tokens.

Variantes e personalização

Você pode aumentar esse fluxo com desafios adicionais, por exemplo, seus próprios desafios de autenticação personalizados. Você pode restringir automaticamente o acesso de usuários cujas senhas foram comprometidas ou cujas características de login inesperadas possam indicar uma tentativa de login mal-intencionada. Esse fluxo é praticamente o mesmo para operações de inscrição, atualização de atributos de usuário e redefinição de senhas. A maioria desses fluxos tem operações de API públicas (do lado do cliente) e confidenciais (do lado do servidor) duplicadas.

Autenticação do grupo de usuários com a interface hospedada

A interface de usuário hospedada é um site vinculado ao seu grupo de usuários e ao cliente do aplicativo. Ele pode realizar operações de login, inscrição e redefinição de senha para seus usuários. Um aplicativo com um componente de interface de usuário hospedado para autenticação pode exigir menos esforço do desenvolvedor para ser implementado. Um aplicativo pode ignorar os componentes da interface do usuário para autenticação e invocar a interface hospedada no navegador do usuário.

Os aplicativos coletam os JWTs dos usuários com um local de redirecionamento da web ou do aplicativo. Os aplicativos que implementam a interface de usuário hospedada podem se conectar a grupos de usuários para autenticação como se fossem um IdP do OpenID Connect (OIDC).

A autenticação de interface de usuário hospedada se encaixa no modelo em que os aplicativos precisam de um servidor de autorização, mas não precisam de recursos como autenticação personalizada, integração de grupos de identidades ou autoatendimento de atributos do usuário. Quando quiser usar algumas dessas opções avançadas, você pode implementá-las com um componente de grupos de usuários para um SDK.

A interface hospedada e os modelos de autenticação de IdP de terceiros, com uma dependência primária da implementação do OIDC, são os melhores para modelos de autorização avançados com escopos do OAuth 2.0.

O diagrama a seguir ilustra uma sessão de login típica para autenticação de interface de usuário hospedada.

Um fluxograma que mostra um aplicativo que solicita a entrada do usuário e o conecta com a interface de usuário hospedada.
Fluxo de autenticação de UI hospedada
  1. Um usuário acessa seu aplicativo.

  2. Eles selecionam um link “Fazer login”.

  3. O aplicativo direciona o usuário para um prompt de login de UI hospedado.

  4. Eles inserem seu nome de usuário e senha.

  5. O grupo de usuários valida as credenciais do usuário e determina se o usuário ativou a autenticação multifator (MFA).

  6. A interface do usuário hospedada solicita que o usuário insira um código de MFA.

  7. O usuário insere seu código de MFA.

  8. A interface do usuário hospedada redireciona o usuário para o aplicativo.

  9. O aplicativo coleta o código de autorização do parâmetro de solicitação de URL que a interface hospedada anexou ao URL de retorno de chamada.

  10. O aplicativo solicita tokens com o código de autorização.

  11. O endpoint do token retorna JWTs para o aplicativo.

  12. O aplicativo decodifica, valida e armazena ou armazena em cache os JWTs do usuário.

  13. O aplicativo exibe o componente de controle de acesso solicitado.

  14. O usuário visualiza seu conteúdo.

  15. Posteriormente, o token de acesso do usuário expirou e ele solicitou a visualização de um componente de acesso controlado.

  16. O aplicativo determina que a sessão do usuário deve persistir. Ele solicita novos tokens do endpoint do token com o token de atualização.

Variantes e personalização

Você pode personalizar a aparência da interface do usuário hospedada com CSS em qualquer cliente de aplicativo. Você também pode configurar clientes de aplicativos com seus próprios provedores de identidade, escopos, acesso aos atributos do usuário e configuração de segurança avançada.

Autenticação do grupo de usuários com um provedor de identidade de terceiros

O login com um provedor de identidade externo (IdP), ou autenticação federada, é um modelo semelhante à interface de usuário hospedada. Seu aplicativo é uma parte dependente do OIDC em seu grupo de usuários, enquanto seu grupo de usuários serve como uma passagem para um IdP. O IdP pode ser um diretório de usuários consumidores, como Facebook ou Google, ou pode ser um diretório corporativo SAML 2.0 ou OIDC, como o Azure.

Em vez da interface de usuário hospedada no navegador do usuário, seu aplicativo invoca um endpoint de redirecionamento no servidor de autorização do grupo de usuários. Do ponto de vista do usuário, ele escolhe o botão de login em seu aplicativo. Em seguida, o IdP solicita que eles façam login. Assim como na autenticação de interface de usuário hospedada, um aplicativo coleta JWTs em um local de redirecionamento no aplicativo.

A autenticação com um IdP de terceiros se encaixa em um modelo em que os usuários talvez não queiram criar uma nova senha ao se inscreverem no seu aplicativo. A autenticação de terceiros pode ser adicionada com pouco esforço a um aplicativo que implementou a autenticação de interface de usuário hospedada. Na verdade, a interface de usuário hospedada e terceiros IdPs produzem um resultado de autenticação consistente a partir de pequenas variações no que você invoca nos navegadores dos usuários.

Assim como a autenticação de interface de usuário hospedada, a autenticação federada é melhor para modelos de autorização avançados com escopos do OAuth 2.0.

O diagrama a seguir ilustra uma sessão de login típica para autenticação federada.

Um fluxograma que mostra um aplicativo que solicita a entrada do usuário e o conecta com um IdP de terceiros.
Fluxo de autenticação federada
  1. Um usuário acessa seu aplicativo.

  2. Eles selecionam um link “Fazer login”.

  3. O aplicativo direciona o usuário para um prompt de login com seu IdP.

  4. Eles inserem seu nome de usuário e senha.

  5. O IdP valida as credenciais do usuário e determina se o usuário ativou a autenticação multifator (MFA).

  6. O IdP solicita que o usuário insira um código de MFA.

  7. O usuário insere seu código de MFA.

  8. O IdP redireciona o usuário para o grupo de usuários com uma resposta SAML ou um código de autorização.

  9. Se o usuário tiver passado um código de autorização, o grupo de usuários trocará silenciosamente o código por tokens IdP. O grupo de usuários valida os tokens do IdP e redireciona o usuário para o aplicativo com um novo código de autorização.

  10. O aplicativo coleta o código de autorização do parâmetro de solicitação de URL que o grupo de usuários anexou ao URL de retorno de chamada.

  11. O aplicativo solicita tokens com o código de autorização.

  12. O endpoint do token retorna JWTs para o aplicativo.

  13. O aplicativo decodifica, valida e armazena ou armazena em cache os JWTs do usuário.

  14. O aplicativo exibe o componente de controle de acesso solicitado.

  15. O usuário visualiza seu conteúdo.

  16. Posteriormente, o token de acesso do usuário expirou e ele solicitou a visualização de um componente de acesso controlado.

  17. O aplicativo determina que a sessão do usuário deve persistir. Ele solicita novos tokens do endpoint do token com o token de atualização.

Variantes e personalização

Você pode iniciar a autenticação federada na interface hospedada, na qual os usuários podem escolher em uma lista das IdPs que você atribuiu ao seu cliente de aplicativo. A interface de usuário hospedada também pode solicitar um endereço de e-mail e encaminhar automaticamente a solicitação de um usuário para o IdP SAML correspondente. A autenticação com um provedor de identidade terceirizado não exige interação do usuário com a interface hospedada. Seu aplicativo pode adicionar um parâmetro de solicitação à solicitação do servidor de autorização do usuário e fazer com que o usuário redirecione silenciosamente para a página de login do IdP.

Autenticação do pool de

Um grupo de identidades é um componente do seu aplicativo que é diferente de um grupo de usuários em função, namespace de API e modelo de SDK. Onde os grupos de usuários oferecem autenticação e autorização baseadas em tokens, os grupos de identidades oferecem autorização para AWS Identity and Access Management (IAM).

Você pode atribuir um conjunto de grupos IdPs de identidades e fazer login de usuários com eles. Os grupos de usuários são estreitamente integrados como grupos de identidades IdPs e oferecem aos grupos de identidades o máximo de opções para controle de acesso. Ao mesmo tempo, há uma ampla seleção de opções de autenticação para grupos de identidades. Os grupos de usuários unem fontes de identidade SAML, OIDC, sociais, de desenvolvedores e convidados como rotas para AWS credenciais temporárias de grupos de identidades.

A autenticação com um grupo de identidades é externa — ela segue um dos fluxos do grupo de usuários ilustrados anteriormente ou um fluxo que você desenvolve de forma independente com outro IdP. Depois que seu aplicativo realiza a autenticação inicial, ele passa a prova para um grupo de identidades e recebe uma sessão temporária em troca.

A autenticação com um grupo de identidades se encaixa em um modelo em que você impõe o controle de acesso aos ativos e dados do aplicativo Serviços da AWS com a autorização do IAM. Assim como na autenticação de API em grupos de usuários, um aplicativo bem-sucedido inclui AWS SDKs para cada um dos serviços que você deseja acessar para o benefício de seus usuários. AWS Os SDKs aplicam as credenciais da autenticação do grupo de identidades como assinaturas às solicitações de API.

O diagrama a seguir ilustra uma sessão de login típica para autenticação de grupos de identidades com um IdP.

Um fluxograma que mostra um aplicativo que solicita a entrada do usuário e o conecta com um IdP de terceiros.
Fluxo de autenticação federada
  1. Um usuário acessa seu aplicativo.

  2. Eles selecionam um link “Fazer login”.

  3. O aplicativo direciona o usuário para um prompt de login com seu IdP.

  4. Eles inserem seu nome de usuário e senha.

  5. O IdP valida as credenciais do usuário.

  6. O IdP redireciona o usuário para o aplicativo com uma resposta SAML ou um código de autorização.

  7. Se o usuário passou um código de autorização, o aplicativo troca o código por tokens IdP.

  8. O aplicativo decodifica, valida e armazena ou armazena em cache as JWTs ou a afirmação do usuário.

  9. O aplicativo invoca o método que faz uma solicitação de GetIdAPI. Ele passa o token ou a declaração do usuário e solicita um ID de identidade.

  10. O grupo de identidades valida o token ou a afirmação em relação aos provedores de identidade configurados.

  11. O grupo de identidades retorna uma ID de identidade.

  12. O aplicativo invoca o método que faz uma solicitação de GetCredentialsForIdentityAPI. Ele passa o token ou as afirmações do usuário e solicita uma função do IAM.

  13. O pool de identidades gera um novo JWT. O novo JWT contém declarações que solicitam uma função do IAM. O grupo de identidades determina a função com base na solicitação do usuário e nos critérios de seleção de função na configuração do grupo de identidades para o IdP.

  14. AWS Security Token Service (AWS STS) responde à AssumeRoleWithWebIdentitysolicitação do grupo de identidades. A resposta contém credenciais de API para uma sessão temporária com uma função do IAM.

  15. O aplicativo armazena as credenciais da sessão.

  16. O usuário executa uma ação no aplicativo que requer acesso a recursos protegidos. AWS

  17. O aplicativo aplica as credenciais temporárias como assinaturas às solicitações de API para o necessário. Serviços da AWS

  18. O IAM avalia as políticas associadas à função nas credenciais. Isso os compara com a solicitação.

  19. O AWS service (Serviço da AWS) retorna os dados solicitados.

  20. O aplicativo renderiza os dados na interface do usuário.

  21. O usuário visualiza os dados.

Variantes e personalização

Para visualizar a autenticação com um grupo de usuários, insira uma das visões gerais anteriores do grupo de usuários após a etapa de token/asserção de problema. A autenticação do desenvolvedor substitui todas as etapas anteriores à identidade da solicitação por uma solicitação assinada pelas credenciais do desenvolvedor. A autenticação de convidados também vai direto para Solicitar identidade, não valida a autenticação e retorna as credenciais para uma função do IAM de acesso limitado.