Usar o Amazon Cognito para aplicativos móveis - AWS Identity and Access Management

Usar o Amazon Cognito para aplicativos móveis

A maneira preferencial de usar a federação OIDC é usar o Amazon Cognito. Por exemplo, a desenvolvedora Adele está criando um jogo para um dispositivo móvel no qual os dados do usuário, como pontuações e perfis, são armazenados no Amazon S3 e no Amazon DynamoDB. Adele também pode armazenar esses dados localmente no dispositivo e usar o Amazon Cognito para mantê-los sincronizados entre os dispositivos. Ela sabe que por motivos de segurança e manutenção, as credenciais de segurança da AWS de longo prazo não devem ser distribuídas com o jogo. Ela também sabe que o jogo pode ter um grande número de usuários. Por todos esses motivos, ela não quer criar novas identidades de usuários no IAM para cada jogador. Em vez disso, ela constrói o jogo para que os usuários possam fazer login usando uma identidade que eles já estabeleceram com um provedor de identidade (IdP) externo conhecido, como Login with Amazon, Facebook, Google ou qualquer IdP compatível com OpenID Connect (OIDC). O jogo dela pode aproveitar o mecanismo de autenticação de um desses provedores para validar a identidade do usuário.

Para permitir que o aplicativo móvel acesse seus recursos da AWS, Adele primeiro se registra para um ID de desenvolvedor com seus IdPs escolhidos. Ela também configura o aplicativo com cada um desses provedores. Na sua Conta da AWS que contém o bucket do Amazon S3 e a tabela do DynamoDB para o jogo, Adele usa o Amazon Cognito para criar perfis do IAM que definem com precisão as permissões necessárias para o jogo. Se ela estiver usando um IdP de OIDC, ela também criará uma entidade de provedor de identidades OIDC do IAM para estabelecer a confiança entre um grupo de identidades do Amazon Cognito na Conta da AWS e o IdP.

No código do aplicativo, a Adele chama a interface de login para o IdP que ela configurou anteriormente. O IdP lida com todos os detalhes para permitir que o usuário faça login, e o aplicativo obtenha um token de acesso OAuth ou um token de ID do OIDC do provedor. O aplicativo da Adele pode trocar essas informações de autenticação para um conjunto de credenciais de segurança temporárias que consiste em um ID de chave de acesso da AWS, uma chave de acesso secreta e um token de sessão. O aplicativo pode então usar essas credenciais para acessar serviços da web oferecidos pela AWS. O aplicativo é limitado às permissões que são definidas na função que ele assume.

A figura a seguir mostra um fluxo simplificado de como isso funciona usando o Login with Amazon como IdP. Para a etapa 2, o aplicativo também pode usar o Facebook, Google ou qualquer IdP compatível com o OIDC, mas isto não é mostrado aqui.

Fluxo de trabalho de exemplo usando o Amazon Cognito para federar usuários para um aplicativo móvel

  1. Um cliente inicia o aplicativo em um dispositivo móvel. O aplicativo solicita que o usuário faça login.

  2. A aplicação usa os recursos do Login with Amazon para aceitar as credenciais do usuário

  3. A aplicação usa operações de API do Amazon Cognito GetId e GetCredentialsForIdentity para trocar o token de ID do login com a Amazon por um token do Amazon Cognito. O Amazon Cognito, que foi configurado para confiar no seu projeto de login com a Amazon, gera um token que ele troca por credenciais de sessão temporárias com o AWS STS.

  4. A aplicação recebe credenciais de segurança temporárias do Amazon Cognito. A aplicação também pode usar o fluxo de trabalho básico (clássico) no Amazon Cognito para recuperar tokens do AWS STS usando AssumeRoleWithWebIdentity. Para obter mais informações consulte Identity pools (federated identities) authentication flow (Fluxo de autenticação de grupos de identidades [identidades federadas] do Amazon Cognito) no Amazon Cognito Developer Guide (Guia do desenvolvedor do Amazon Cognito).

  5. As credenciais de segurança temporárias podem ser usadas pelo aplicativo para acessar qualquer recurso da AWS exigido pelo aplicativo para operar. A função associada às credenciais de segurança temporárias e às políticas atribuídas determina o que pode ser acessado.

Use o processo a seguir para configurar sua aplicação para usar o Amazon Cognito para autenticar usuários e fornecer à aplicação acesso aos recursos da AWS. Para obter etapas específicas para realizar esse cenário, consulte a documentação do Amazon Cognito.

  1. (Opcional) Cadastre-se como um desenvolvedor com Login with Amazon, Facebook, Google ou qualquer outro IdP compatível com OpenID Connect (OIDC) e configure uma ou mais aplicações com o provedor. Esta etapa é opcional, pois o Amazon Cognito também oferece suporte ao acesso não autenticado (de convidado) para seus usuários.

  2. Acesse Amazon Cognito no AWS Management Console. Use o assistente do Amazon Cognito para criar um grupo de identidades, que é um contêiner que o Amazon Cognito usa para manter as identidades dos usuários finais organizadas para suas aplicações. Você pode compartilhar grupos de identidades entre aplicativos. Ao configurar um grupo de identidades, o Amazon Cognito cria uma ou duas funções do IAM (uma para identidades autenticadas e outra para identidades de “convidados” não autenticados) que definem permissões para os usuários do Amazon Cognito.

  3. Integre o AWSAmplify com a aplicação e importe os arquivos necessários para usar o Amazon Cognito.

  4. Crie uma instância do provedor de credenciais do Amazon Cognito, passando o ID do grupo de identidades, o número da sua Conta da AWS e o nome do recurso da Amazon (ARN) dos perfis que você associou ao grupo de identidades. O assistente do Amazon Cognito no AWS Management Console fornece o código de exemplo para ajudar você a começar.

  5. Quando o seu aplicativo acessa um recurso da AWS, transmite as instâncias do provedor de credenciais para o objeto do cliente, que, por sua vez, transmite as credenciais de segurança temporárias ao cliente. As permissões para as credenciais são baseadas na função ou funções que você definiu anteriormente.

Para obter mais informações, consulte: