Como acessar os serviços da AWS usando um grupo de identidades após o acesso
Você pode permitir que os usuários façam login com um grupo de usuários e, em seguida, acessem os serviços da AWS usando um grupo de identidades.
Depois de uma autenticação bem-sucedida, sua aplicação Web ou móvel receberá tokens do grupo de usuários do Amazon Cognito. Você pode usar esses tokens para recuperar credenciais da AWS que permitem que sua aplicação acesse outros serviços da AWS. Para obter mais informações, consulte Conceitos básicos dos grupos de identidades do Amazon Cognito (identidades federadas).
Para mais informações sobre o uso dos grupos de identidades junto com grupos de usuários para controlar o acesso aos recursos da AWS, consulte Como adicionar grupos a um grupo de usuários e Controle de acesso com base em perfil. Consulte também Conceitos de grupos de identidades (identidades federadas) para obter mais informações sobre grupos de identidades e o AWS Identity and Access Management.
Como configurar 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.
Como configurar um grupo de identidades com o AWS Management Console
O procedimento a seguir descreve como usar o AWS Management Console para integrar um grupo de identidades com um ou mais grupos de usuários e aplicativos cliente.
- AWS Management Console
-
Para configurar o pool de identidades
-
Acesse o console do Amazon Cognito. Se solicitado, insira suas credenciais da AWS.
-
Escolha Federated identities (Identidades federadas).
-
Escolha o nome do grupo de identidades para o qual você quer habilitar grupos de usuários do Amazon Cognito como provedores.
-
Na página Dashboard (Painel), escolha Edit identity pool (Editar grupo de identidades).
-
Expanda a seção Authentication providers (Provedores de autenticação).
-
Escolha Cognito.
-
Insira o User Pool ID (ID do grupo de usuários).
-
Insira o App Client ID (ID do cliente da aplicação). Esse deve ser o mesmo ID do cliente da aplicação que você recebeu quando criou a aplicação na seção User pools (Grupos de usuários) do console.
-
Se tiver aplicações ou grupos de usuários adicionais, escolha Add Another Provider (Adicionar outro provedor) e insira o User Pool ID (ID do grupo de usuários) e o App Client ID (ID do cliente da aplicação) de cada aplicação em cada grupo de usuários.
-
Quando você não tiver mais aplicativos ou grupos de usuários para adicionar, escolha Save Changes (Salvar alterações). Se a operação for bem-sucedida, você verá uma mensagem Changes saved successfully (Alterações salvas com êxito) na página Dashboard (Painel).
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>
O valor de <region>
equivalerá à região especificada em ID do grupo de usuários. Por exemplo, cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789
.
- 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)