Como obter credenciais
É possível usar o Amazon Cognito para oferecer credenciais temporárias e de privilégio limitado à aplicação para que os usuários possam acessar recursos da AWS. Esta seção descreve como obter credenciais e como recuperar uma identidade do Amazon Cognito de um grupo de identidades.
O Amazon Cognito é compatível com identidades autenticadas e não autenticadas. Usuários não autenticados não têm a identidade verificada, tornando essa função apropriada para usuários convidados de seu aplicativo ou nos casos em que não importa se os usuários têm suas identidades verificadas. Os usuários autenticados fazem login em seu aplicativo por meio de um provedor de identidade de terceiros ou de um grupo de usuários, que verifica as identidades. Certifique-se de definir o escopo das permissões dos recursos de forma apropriada para que você não conceda acesso a eles a partir de usuários não autenticados.
As identidades do Amazon Cognito não são credenciais. Elas são trocadas por credenciais usando o suporte à federação de identidades da web no AWS Security Token Service (AWS STS). A maneira recomendada para obter credenciais da AWS para os usuários da sua aplicação é usar AWS.CognitoIdentityCredentials
. A identidade no objeto de credenciais é, então, trocada por credenciais usando o AWS STS.
nota
Se você criou o grupo de identidades antes de fevereiro de 2015, precisa reassociar as funções ao grupo de identidades para usar o construtor AWS.CognitoIdentityCredentials
sem as funções como parâmetros. Para isso, abra o Console do Amazon Cognito
Android
É possível usar o Amazon Cognito para oferecer credenciais temporárias e de privilégio limitado à aplicação para que os usuários possam acessar recursos da AWS. O Amazon Cognito é compatível com identidades autenticadas e não autenticadas. Para fornecer credenciais da AWS à aplicação, siga as etapas abaixo.
-
Selecione Manage identity pools (Gerenciar grupos de identidades) no console do Amazon Cognito
, crie um grupo de identidades e copie trechos do código inicial. -
Adicione o AWS Mobile SDK for Android ao projeto, se ainda não tiver feito isso. Para obter instruções, consulte Configurar o Mobile SDK for Android.
-
Inclua as seguintes declarações de importação:
import com.amazonaws.auth.CognitoCachingCredentialsProvider; import com.amazonaws.regions.Regions;
-
Inicialize o provedor de credenciais do Amazon Cognito usando o trecho de código gerado pelo console do Amazon Cognito. O valor para
IDENTITY_POOL_ID
será específico para sua conta:CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicationContext(), // Context "IDENTITY_POOL_ID", // Identity Pool ID Regions.US_EAST_1 // Region );
-
Transmita o provedor de credenciais do Amazon Cognito inicializado para o construtor do cliente da AWS a ser usado. O código necessário depende do serviço a ser inicializado. O cliente usará esse provedor para obter credenciais com as quais acessará os recursos da AWS.
nota
Se você criou o grupo de identidades antes de fevereiro de 2015, precisa reassociar as funções ao grupo de identidades para usar esse construtor sem as funções como parâmetros. Para isso, abra o Console do Amazon Cognito
, escolha Manage Federated Identities (Gerenciar identidades federadas), selecione seu grupo de identidades e escolha Edit Identity Pool (Editar grupo de identidades), especifique suas funções autenticadas e não autenticadas e salve as alterações.
Como recuperar uma identidade do Amazon Cognito
Se você permite usuários não autenticados, pode recuperar um identificador exclusivo (ID de identidade) do Amazon Cognito para o usuário final imediatamente. Se você está autenticando usuários, pode recuperar o ID de identidade depois de configurar os tokens de login no provedor de credenciais:
String identityId = credentialsProvider.getIdentityId(); Log.d("LogTag", "my ID is " + identityId);
nota
Não chame getIdentityId()
, refresh()
ou getCredentials()
no thread principal do aplicativo. A partir do Android 3.0 (API nível 11), o aplicativo automaticamente terá uma falha e lançará um NetworkOnMainThreadExceptionAsyncTask
. Para obter mais informações, consulte a documentação do AndroidgetCachedIdentityId()
para recuperar um ID, mas somente se já existe algum em cache localmente. Caso contrário, o método retornará null.
iOS – Objective-C
É possível usar o Amazon Cognito para oferecer credenciais temporárias e de privilégio limitado à aplicação para que os usuários possam acessar recursos da AWS. Os grupos de identidades do Amazon Cognito oferecem suporte a identidades autenticadas e não autenticadas. Para fornecer credenciais da AWS à aplicação, siga as etapas abaixo.
-
Selecione Manage identity pools (Gerenciar grupos de identidades) no console do Amazon Cognito
, crie um grupo de identidades e copie trechos do código inicial. -
Adicione o AWS Mobile SDK for iOS ao projeto, se ainda não tiver feito isso. Para obter instruções, consulte Configurar o Mobile SDK for iOS.
-
No código-fonte, inclua o cabeçalho AWSCore:
#import <AWSCore/AWSCore.h>
-
Inicialize o provedor de credenciais do Amazon Cognito usando o trecho de código gerado pelo console do Amazon Cognito. O valor para
IDENTITY_POOL_ID
será específico para sua conta:AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"IDENTITY_POOL_ID"]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider]; AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
nota
Se você criou o grupo de identidades antes de fevereiro de 2015, precisa reassociar as funções ao grupo de identidades para usar esse construtor sem as funções como parâmetros. Para isso, abra o Console do Amazon Cognito
, escolha Manage identity pools (Gerenciar grupos de identidades), selecione seu grupo de identidades, escolha Edit Identity Pool (Editar grupo de identidades), especifique suas funções autenticadas e não autenticadas e salve as alterações.
Como recuperar uma identidade do Amazon Cognito
É possível recuperar um identificador exclusivo (ID de identidade) do Amazon Cognito para o usuário final imediatamente se você estiver permitindo usuários não autenticados ou depois de configurar os tokens de login no provedor de credenciais se estiver autenticando usuários:
// Retrieve your Amazon Cognito ID [[credentialsProvider getIdentityId] continueWithBlock:^id(AWSTask *task) { if (task.error) { NSLog(@"Error: %@", task.error); } else { // the task result will contain the identity id NSString *cognitoId = task.result; } return nil; }];
nota
getIdentityId
é uma chamada assíncrona. Se um ID de identidade já estiver configurado no provedor, você pode chamar credentialsProvider.identityId
para recuperar essa identidade, que é armazenada em cache localmente. No entanto, se um ID de identidade não estiver configurado no provedor, chamar credentialsProvider.identityId
retornará nil
. Para obter mais informações, consulte a Referência do Amplify iOS SDK
iOS – Swift
É possível usar o Amazon Cognito para oferecer credenciais temporárias e de privilégio limitado à aplicação para que os usuários possam acessar recursos da AWS. O Amazon Cognito é compatível com identidades autenticadas e não autenticadas. Para fornecer credenciais da AWS à aplicação, siga as etapas abaixo.
-
Selecione Manage identity pools (Gerenciar grupos de identidades) no console do Amazon Cognito
, crie um grupo de identidades e copie trechos do código inicial. -
Adicione o Mobile SDK for iOS ao projeto, se isso ainda não tiver sido feito. Para obter instruções, consulte Configurar o SDK para iOS.
-
No código-fonte, inclua o cabeçalho
AWSCore
:import AWSCore
-
Inicialize o provedor de credenciais do Amazon Cognito usando o trecho de código gerado pelo console do Amazon Cognito. O valor para
IDENTITY_POOL_ID
será específico para sua conta:let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "IDENTITY_POOL_ID") let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration
nota
Se você criou o grupo de identidades antes de fevereiro de 2015, precisa reassociar as funções ao grupo de identidades para usar esse construtor sem as funções como parâmetros. Para isso, abra o Console do Amazon Cognito
, escolha Manage identity pools (Gerenciar grupos de identidades), selecione seu grupo de identidades, escolha Edit Identity Pool (Editar grupo de identidades), especifique suas funções autenticadas e não autenticadas e salve as alterações.
Como recuperar uma identidade do Amazon Cognito
É possível recuperar um identificador exclusivo (ID de identidade) do Amazon Cognito para o usuário final imediatamente se você estiver permitindo usuários não autenticados ou depois de configurar os tokens de login no provedor de credenciais se estiver autenticando usuários:
// Retrieve your Amazon Cognito ID credentialsProvider.getIdentityId().continueWith(block: { (task) -> AnyObject? in if (task.error != nil) { print("Error: " + task.error!.localizedDescription) } else { // the task result will contain the identity id let cognitoId = task.result! print("Cognito id: \(cognitoId)") } return task; })
nota
getIdentityId
é uma chamada assíncrona. Se um ID de identidade já estiver configurado no provedor, você pode chamar credentialsProvider.identityId
para recuperar essa identidade, que é armazenada em cache localmente. No entanto, se um ID de identidade não estiver configurado no provedor, chamar credentialsProvider.identityId
retornará nil
. Para obter mais informações, consulte a Referência do Amplify iOS SDK
JavaScript
Se você ainda não tiver criado, crie um grupo de identidades no console do Amazon CognitoAWS.CognitoIdentityCredentials
.
Depois de configurar um grupo de identidades com seus provedores de identidades, você poderá usar AWS.CognitoIdentityCredentials
para autenticar usuários. Para configurar as credenciais de seu aplicativo para usar AWS.CognitoIdentityCredentials
, defina a propriedade credentials
do AWS.Config
ou uma configuração por serviço. O exemplo a seguir usa AWS.Config
:
// Set the region where your identity pool exists (us-east-1, eu-west-1) AWS.config.region = 'us-east-1'; // Configure the credentials provider to use your identity pool AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { // optional tokens, used for authenticated login 'graph.facebook.com': 'FBTOKEN', 'www.amazon.com': 'AMAZONTOKEN', 'accounts.google.com': 'GOOGLETOKEN', 'appleid.apple.com': 'APPLETOKEN' } }); // Make the call to obtain credentials AWS.config.credentials.get(function(){ // Credentials will be available when this function is called. var accessKeyId = AWS.config.credentials.accessKeyId; var secretAccessKey = AWS.config.credentials.secretAccessKey; var sessionToken = AWS.config.credentials.sessionToken; });
A propriedade opcional Logins
é um mapa de nomes de provedor de identidade para os tokens de identidade para esses provedores. Como você obtém o token do seu provedor de identidade depende do provedor que usa. Por exemplo, se o Facebook for um de seus provedores de identidade, você poderá usar a FB.login
função do Facebook SDK
FB.login(function (response) { if (response.authResponse) { // logged in AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } });
Como recuperar uma identidade do Amazon Cognito
É possível recuperar um identificador exclusivo (ID de identidade) do Amazon Cognito para o usuário final imediatamente se você estiver permitindo usuários não autenticados ou depois de configurar os tokens de login no provedor de credenciais se estiver autenticando usuários:
var identityId = AWS.config.credentials.identityId;
Unity
É possível usar o Amazon Cognito para oferecer credenciais temporárias e de privilégio limitado à aplicação para que os usuários possam acessar recursos da AWS. O Amazon Cognito é compatível com identidades autenticadas e não autenticadas. Para fornecer credenciais da AWS à aplicação, siga as etapas abaixo.
-
Selecione Manage Identity Pools (Gerenciar grupos de identidades) no console do Amazon Cognito
, crie um grupo de identidades e copie trechos do código inicial. -
Se ainda não tiver feito, faça download e importe o pacote AWS Mobile SDK for Unity
para seu projeto. Você pode fazer isso no menu Assets > Import Package > Custom Package. -
Cole o trecho do código inicial do console no script do qual você deseja chamar o Amazon Cognito. O valor para
IDENTITY_POOL_ID
será específico para sua conta:CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "IDENTITY_POOL_ID", // Cognito identity Pool ID RegionEndpoint.USEast1 // Region );
-
Transmita as credenciais do Amazon Cognito inicializadas para o construtor do cliente da AWS a ser usado. O código necessário depende do serviço a ser inicializado. O cliente usará esse provedor para obter credenciais com as quais acessará os recursos da AWS.
nota
Se você criou o grupo de identidades antes de fevereiro de 2015, precisa reassociar as funções ao grupo de identidades para usar esse construtor sem as funções como parâmetros. Para isso, abra o Console do Amazon Cognito
, escolha Manage identity pools (Gerenciar grupos de identidades), selecione seu grupo de identidades, escolha Edit Identity Pool (Editar grupo de identidades), especifique suas funções autenticadas e não autenticadas e salve as alterações.
Como recuperar uma identidade do Amazon Cognito
É possível recuperar um identificador exclusivo (ID de identidade) do Amazon Cognito para o usuário final imediatamente se você estiver permitindo usuários não autenticados ou depois de configurar os tokens de login no provedor de credenciais se estiver autenticando usuários:
credentials.GetIdentityIdAsync(delegate(AmazonCognitoIdentityResult<string> result) { if (result.Exception != null) { //Exception! } string identityId = result.Response; });
Xamarin
É possível usar o Amazon Cognito para oferecer credenciais temporárias e de privilégio limitado à aplicação para que os usuários possam acessar recursos da AWS. O Amazon Cognito é compatível com identidades autenticadas e não autenticadas. Para fornecer credenciais da AWS à aplicação, siga as etapas abaixo.
-
Selecione Manage Identity Pools (Gerenciar grupos de identidades) no console do Amazon Cognito
, crie um grupo de identidades e copie trechos do código inicial. -
Adicione o AWS Mobile SDK for Xamarin ao projeto, se ainda não tiver feito isso. Para obter instruções, consulte Configurar o SDK para Xamarin.
-
Inclua as seguintes declarações de uso:
using Amazon.CognitoIdentity;
-
Cole o trecho do código inicial do console no script do qual você deseja chamar o Amazon Cognito. O valor para
IDENTITY_POOL_ID
será específico para sua conta:CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "IDENTITY_POOL_ID", // Cognito identity Pool ID RegionEndpoint.USEast1 // Region );
-
Transmita as credenciais do Amazon Cognito inicializadas para o construtor do cliente da AWS a ser usado. O código necessário depende do serviço a ser inicializado. O cliente usará esse provedor para obter credenciais com as quais acessará os recursos da AWS.
nota
Observação: se você criou o grupo de identidades antes de fevereiro de 2015, precisa reassociar as funções ao grupo de identidades para usar esse construtor sem as funções como parâmetros. Para isso, abra o Console do Amazon Cognito
Como recuperar uma identidade do Amazon Cognito
É possível recuperar um identificador exclusivo (ID de identidade) do Amazon Cognito para o usuário final imediatamente se você estiver permitindo usuários não autenticados ou depois de configurar os tokens de login no provedor de credenciais se estiver autenticando usuários:
var identityId = await credentials.GetIdentityIdAsync();