Como acessar os Serviços da AWS usando um banco de identidades após o login - 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 acessar os Serviços da AWS usando um banco de identidades após o login

Depois que seus usuários entrarem com um grupo de usuários, eles poderão acessar Serviços da AWS com credenciais de API temporárias emitidas de um grupo de identidades.

Sua aplicação web ou móvel recebe tokens de um grupo de usuários. Quando você configura seu grupo de usuários como um provedor de identidade para seu grupo de identidades, o grupo de identidades troca tokens por AWS credenciais temporárias. Essas credenciais podem ser definidas de acordo com as funções do IAM e suas políticas, que dão aos usuários acesso a um conjunto limitado de AWS recursos. Para obter mais informações, consulte Fluxo de autenticação dos bancos de identidades.

O diagrama a seguir mostra como uma aplicação faz login com um grupo de usuários, recupera as credenciais do banco de identidades e solicita um ativo de um AWS service (Serviço da AWS).

Um diagrama de fluxo de um aplicativo que se autentica com um grupo de usuários do Amazon Cognito e autoriza o acesso AWS a recursos com um grupo de identidades.

Você pode usar as credenciais do banco de identidades para:

  • Fazer solicitações de autorização detalhadas para o Amazon Verified Permissions com as próprias credenciais do seu usuário.

  • Conecte-se a uma API REST do Amazon API Gateway ou a uma API AWS AppSync GraphQL que autorize conexões com o IAM.

  • Conectar-se a um backend de banco de dados, como Amazon DynamoDB ou Amazon RDS, que autoriza conexões com o IAM.

  • Recuperar ativos da aplicação de um bucket do Amazon S3.

  • Inicie uma sessão com um desktop WorkSpaces virtual da Amazon.

Os bancos de identidades não operam exclusivamente em uma sessão autenticada com um grupo de usuários. Eles também aceitam autenticação diretamente de provedores de identidades de terceiros e podem gerar credenciais para usuários convidados não autenticados.

Para obter mais informações sobre o uso de grupos de identidades junto com grupos de grupos de usuários para controlar o acesso aos seus AWS recursos, consulte Como adicionar grupos a um grupo de usuários Controle de acesso com base em perfil e. Além disso, para obter mais informações sobre grupos de identidades e AWS Identity and Access Management, consulteFluxo de autenticação dos bancos de identidades.

Configurando um grupo de usuários com o AWS Management Console

Crie um grupo de usuários do Amazon Cognito e anote o ID de grupos de usuários e o ID do cliente da aplicação de cada uma das suas aplicações clientes. Para obter mais informações sobre como criar grupos de usuários, consulte Conceitos básicos dos grupos de usuários.

Configurando um pool de identidades com o AWS Management Console

O procedimento a seguir descreve como usar o AWS Management Console para integrar um grupo de identidades a um ou mais grupos de usuários e aplicativos clientes.

Como adicionar um provedor de identidades (IdP) de grupos de usuários do Amazon Cognito
  1. Selecione Bancos de identidades no console do Amazon Cognito. Selecione um banco de identidades.

  2. Selecione a guia Acesso do usuário.

  3. Selecione Adicionar provedor de identidade.

  4. Selecione Grupo de usuários do Amazon Cognito.

  5. Insira um ID de grupo de usuários e um ID de cliente de aplicativo.

  6. Para alterar o perfil que o Amazon Cognito solicita ao emitir credenciais para usuários que se autenticaram com esse provedor, defina Configurações de perfil.

    1. Você pode conceder aos usuários desse IdP o Perfil padrão que você configurou ao definir seu Perfil autenticado ou Escolher perfil com regras. Com um IdP de grupo de usuários do Amazon Cognito, você também pode Escolher perfil com a reivindicação preferred_role em tokens. Para ter mais informações sobre a declaração cognito:preferred_role, consulte Como atribuir valores de precedência a grupos.

      1. Se você escolheu Escolher perfil com regras, insira a Declaração de origem da autenticação do usuário, o Operador pelo qual você deseja comparar a reivindicação à regra, o Valor que gerará uma correspondência com essa opção de perfil e o Perfil que você deseja atribuir quando houver correspondência com a Atribuição de perfil. Selecione Adicionar outra para criar uma regra adicional com base em uma condição diferente.

      2. Se você selecionar Escolher perfil com a reivindicação preferred_role em tokens, o Amazon Cognito emitirá credenciais para o perfil na reivindicação do usuário cognito:preferred_role. Se nenhuma reivindicação de perfil preferencial estiver presente, o Amazon Cognito emitirá credenciais com base na Resolução de função.

    2. Selecione uma Resolução de perfil. Quando as declarações do usuário não correspondem às suas regras, você pode negar ou emitir credenciais para seu Perfil autenticado.

  7. Para alterar as tags de identidade principal que o Amazon Cognito atribui ao emitir credenciais para usuários que se autenticaram com esse provedor, configure Atributos para controle de acesso.

    • Para não aplicar nenhuma tag de entidade principal, selecione Inativo.

    • Para aplicar tags de entidade principal com base em declarações sub e aud, selecione Usar mapeamentos padrão.

    • Para criar seu próprio esquema personalizado de atributos para as tags de entidade principal, selecione Usar mapeamentos personalizados. Depois, insira a Chave de tag que você deseja obter de cada declaração e representar em uma tag.

  8. Selecione Salvar alterações.

Como integrar um grupo de usuários com um grupo de identidades

Depois que o usuário do aplicativo for autenticado, adicione o token de identidade desse usuário ao mapa de logins no provedor de credenciais. O nome do provedor dependerá do ID do grupo de usuários do Amazon Cognito. Ele terá a seguinte estrutura:

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

Você pode derivar o valor de a <region> partir da ID do grupo de usuários. Por exemplo, se o ID do grupo de usuários forus-east-1_EXAMPLE1, então <region> éus-east-1. Se o ID do grupo de usuários forus-west-2_EXAMPLE2, então <region> éus-west-2.

JavaScript
var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, result) { if (result) { console.log('You are now logged in.'); // Add the User's Id Token to the Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'YOUR_IDENTITY_POOL_ID', Logins: { 'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken() } }); } }); }
Android
cognitoUser.getSessionInBackground(new AuthenticationHandler() { @Override public void onSuccess(CognitoUserSession session) { String idToken = session.getIdToken().getJWTToken(); Map<String, String> logins = new HashMap<String, String>(); logins.put("cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>", session.getIdToken().getJWTToken()); credentialsProvider.setLogins(logins); } });
iOS - objective-C
AWSServiceConfiguration *serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; AWSCognitoIdentityUserPoolConfiguration *userPoolConfiguration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:@"YOUR_CLIENT_ID" clientSecret:@"YOUR_CLIENT_SECRET" poolId:@"YOUR_USER_POOL_ID"]; [AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:serviceConfiguration userPoolConfiguration:userPoolConfiguration forKey:@"UserPool"]; AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"]; AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YOUR_IDENTITY_POOL_ID" identityProviderManager:pool];
iOS - swift
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil) let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", poolId: "YOUR_USER_POOL_ID") AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool") let pool = AWSCognitoIdentityUserPool(forKey: "UserPool") let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YOUR_IDENTITY_POOL_ID", identityProviderManager:pool)