Acesse os serviços da AWS a partir de um aplicativo ASP.NET Core usando bancos de identidade do Amazon Cognito - Recomendações da AWS

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

Acesse os serviços da AWS a partir de um aplicativo ASP.NET Core usando bancos de identidade do Amazon Cognito

Criado por Bibhuti Sahu (AWS) e Marcelo Barbosa (AWS)

Ambiente: PoC ou piloto

Tecnologias: segurança, identidade, conformidade; aplicativos web e móveis

Serviços da AWS: Amazon Cognito

Resumo

Esse padrão discute como você pode configurar grupos de usuários e bancos de identidade do Amazon Cognito e, em seguida, habilitar um aplicativo ASP.NET Core para acessar os recursos da AWS após a autenticação bem-sucedida.

O Amazon Cognito fornece autenticação, autorização e gerenciamento de usuários para aplicativos web e móveis. Os dois principais componentes do Amazon Cognito são grupos de usuários e bancos de identidades.

Grupo de usuários é um diretório de usuários no Amazon Cognito. Com um grupo de usuários, seus usuários podem fazer login em aplicações Web ou móveis por meio do Amazon Cognito. Os usuários também podem fazer login por meio de provedores de identidade social, como o Google, o Facebook, a Amazon ou a Apple, e por meio de provedores de identidade SAML.

Os grupos de identidades do Amazon Cognito (identidades federadas) permitem a criação de identidades exclusivas para os usuários e federá-las com provedores de identidade. Com um grupo de identidades, você pode obter credenciais da AWS temporárias e de privilégio limitado para acessar outros serviços da AWS. Antes de começar a usar seu novo banco de identidade do Amazon Cognito, você deve atribuir uma ou mais perfis do AWS Identity and Access Management (IAM) para determinar o nível de acesso que você deseja que os usuários do seu aplicativo tenham aos seus recursos da AWS. Os grupos de identidades definem dois tipos de identidades: autenticadas e não autenticadas. Cada tipo de identidade pode ter sua própria função no IAM. As identidades autenticadas pertencem aos usuários que serão autenticados por um provedor de login público (grupos de usuários do Amazon Cognito, Facebook, Google, SAML ou qualquer provedor do OpenID Connect) ou um provedor de desenvolvedor (seu próprio processo de autenticação de back-end), enquanto identidades não autenticadas geralmente pertencem a usuários convidados. Quando o Amazon Cognito receber uma solicitação, o serviço determinará o tipo de identidade, a função atribuída a esse tipo de identidade e usará a política anexada a essa função para responder. 

Pré-requisitos e limitações

Pré-requisitos

  • Um conta da AWS com permissões do Amazon Cognito e do IAM.

  • Acesso a recursos da AWS que você deseja usar

  • ASP.NET Core 2.0.0 ou superior

Arquitetura

Pilha de tecnologia

  • Amazon Cognito

  • ASP.NET Core

Arquitetura de destino

Ferramentas

Ferramentas, SDKs e serviços da AWS

Código

O arquivo.zip anexado inclui arquivos de amostra que ilustram:

  • Como recuperar um token de acesso para o usuário conectado

  • Como trocar um token de acesso por credenciais da AWS

  • Como acessar o serviço Amazon Simple Storage Service (Amazon S3) com credenciais da AWS

Perfil do IAM para identidades autenticadas

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mobileanalytics:PutEvents", "cognito-sync:*", "cognito-identity:*", "s3:ListAllMyBuckets*" ], "Resource": [ "*" ] } ] }

Épicos

TarefaDescriçãoHabilidades necessárias

Criar um grupo de usuários.

  1. Faça login no Console de Gerenciamento da AWS e abra o console do Amazon Cognito em https://console.aws.amazon.com/cognito/home.

  2. Selecione Manage User Pools.

  3. No canto superior direito da página, selecione Create a user pool (Criar um grupo de usuários).

  4. Forneça um nome para seu grupo de usuários, escolha Revisar padrões e, em seguida, escolha Criar grupo.

  5. Observe o ID do grupo.

Desenvolvedor

Adicione um cliente de aplicativo.

Você pode criar um aplicativo para usar as páginas da Web integradas a fim de fazer login e cadastro de seus usuários.

  1. Na barra de navegação no lado esquerdo da página de grupo de usuários, escolha Clientes do aplicativo em Configurações gerais, depois escolha Adicionar um cliente do aplicativo.

  2. Dê um nome para o aplicativo e escolha Criar cliente do aplicativo.

  3. Anote a ID do cliente do aplicativo e o segredo do cliente (escolha Mostrar detalhes para ver o segredo do cliente).

Desenvolvedor
TarefaDescriçãoHabilidades necessárias

Crie um grupo de identidades do .

  1. No console do Amazon Cognito, escolha Gerenciar bancos de identidades e, em seguida, escolha Criar novo banco de identidades.

  2. Digite um nome para o banco de identidades.

  3. Se você quiser ativar identidades não autenticadas, selecione essa opção na seção Identidades não autenticadas.

  4. Na seção Provedores de autenticação, configure o banco de identidades do Cognito definindo o ID do grupo de usuários e a ID do cliente do aplicativo e, em seguida, escolha Criar grupo.

Desenvolvedor

Atribua perfis do IAM para o banco de identidades.

Você pode editar os perfis do IAM para usuários autenticados e não autenticados ou manter os padrões e escolher Permitir. Para esse padrão, editaremos o perfil do IAM autenticado e forneceremos acesso para s3:ListAllMyBuckets. Para ver um exemplo de código, consulte o perfil do IAM fornecida anteriormente na seção Ferramentas.

Desenvolvedor

Copie o ID do banco de identidades.

Quando você escolhe Permitir na etapa anterior, a página Conceitos básicos do Amazon Cognito é exibida. Nessa página, você pode copiar o ID do banco de identidades da seção Obter credenciais da AWS ou escolher Editar banco de identidades no canto superior direito e copiar a ID do grupo de identidades da tela exibida.

Desenvolvedor
TarefaDescriçãoHabilidades necessárias

Clone o aplicativo web ASP.NET de amostra.

  1. Clone a amostra do aplicativo web.NET core em https://github.com/aws/ aws-aspnet-cognito-identity -provider.git.

  2. Navegue até a pasta samples e abra a solução. Neste projeto, você configurará o arquivo appsettings.json e adicionará uma nova página que renderizará todos os buckets do S3 após o login bem-sucedido.

Desenvolvedor

Adicione dependências.

Adicione uma NuGet dependência Amazon.AspNetCore.Identity.Cognito para seu aplicativo ASP.NET Core.

Desenvolvedor

Adicione as chaves e os valores de configuração ao appsettings.json.

Inclua o código do arquivo appsettings.json anexado em seu arquivo appsettings.json e, em seguida, substitua os espaços reservados pelos valores das etapas anteriores.

Desenvolvedor

Crie um novo usuário e faça login.

Crie um novo usuário no grupo de usuários do Amazon Cognito e verifique se o usuário existe em Usuários e grupos no grupo de usuários.

Desenvolvedor

Crie uma nova página Razor chamada MyS3buckets.

Adicione uma nova página Razor Page ASP.NET Core ao seu aplicativo de amostra e substitua o conteúdo por MyS3Bucket.cshtml e MyS3Bucket.cshtml.cs da amostra anexada. Adicione a nova página MyS3Bucket em navegação, na página _Layout.cshtml.

Desenvolvedor

Solução de problemas

ProblemaSolução

Depois de abrir o aplicativo de amostra no GitHub repositório, você recebe um erro ao tentar adicionar o NuGet pacote ao projeto Samples.

Na pasta src, certifique-se de remover a referência ao projeto Amazon.AspNetCore.Identity.Cognito do arquivo Samples.sln. Em seguida, você pode adicionar o NuGet pacote ao projeto Samples sem problemas.

Recursos relacionados

Anexos

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip