Configurando o Login with Amazon como um IdP de grupos de identidades - 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á.

Configurando o Login with Amazon como um IdP de grupos de identidades

O Amazon Cognito se integra ao Login with Amazon para fornecer autenticação federada aos usuários da aplicação Web e do aplicativo móvel. Esta seção explica como inscrever e configurar a aplicação com o Login with Amazon como provedor de identidade (IdP).

No Portal do desenvolvedor, configure o Login with Amazon para funcionar com o Amazon Cognito. Para obter mais informações, consulte Configuração do Login with Amazon em Perguntas frequentes sobre Login with Amazon.

nota

Para integrar o Login with Amazon a uma aplicação Xamarin, siga o Guia de conceitos básicos do Xamarin.

nota

Você não pode integrar nativamente o Login with Amazon na plataforma Unity. Em vez disso, use uma visualização da Web e siga o fluxo de login do navegador.

Como configurar o Login with Amazon

Implementar o Login with Amazon

No Portal do desenvolvedor da Amazon, você pode configurar uma aplicação OAuth para integrá-la ao grupo de identidades, localizar a documentação do Login with Amazon e baixar SDKs. No Portal do desenvolvedor, escolha Developer console (Console do desenvolvedor) e, em seguida, Login with Amazon. Você pode criar um perfil de segurança e, em seguida, mecanismos de autenticação do Login with Amazon em sua aplicação. Consulte Como obter credenciais para obter mais informações sobre como integrar a autenticação Login with Amazon à sua aplicação.

A Amazon emite um ID de cliente OAuth 2.0 para o novo perfil de segurança. Você pode encontrar o ID de cliente na guia do perfil de segurança Web Settings (Configurações da Web). Digite o ID do perfil de segurança no campo ID da aplicação do Login com Amazon IdP no banco de identidades.

nota

Digite o ID do perfil de segurança no campo ID da aplicação do Login com Amazon IdP no banco de identidades. Isso difere dos grupos de usuários, que usam ID do cliente.

Configurar o provedor externo no console do Amazon Cognito

Como adicionar um login com o provedor de identidades (IdP) da Amazon
  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 Login with Amazon.

  5. Insira o ID da aplicação do projeto OAuth que você criou em Login for Amazon. Para ter mais informações, consulte a documentação do Login with Amazon.

  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 atribuir aos usuários desse IdP o Perfil padrão que você configurou ao definir seu Perfil autenticado ou Escolher perfil com regras.

      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 declaração, 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. 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.

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

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

    3. 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 Save Changes (Salvar alterações).

Use o Login with Amazon: Android

Depois de autenticar o login da Amazon, você pode passar o token para o provedor de credenciais do Amazon Cognito no método OnSuccess da interface. TokenListener O código é semelhante a:

@Override public void onSuccess(Bundle response) { String token = response.getString(AuthzConstants.BUNDLE_KEY.TOKEN.val); Map<String, String> logins = new HashMap<String, String>(); logins.put("www.amazon.com", token); credentialsProvider.setLogins(logins); }

Use o Login with Amazon: iOS – Objective-C

Depois de autenticar o login da Amazon, você pode passar o token para o provedor de credenciais do Amazon Cognito no método requestDidSucceed da AMZN: AccessTokenDelegate

- (void)requestDidSucceed:(APIResult \*)apiResult { if (apiResult.api == kAPIAuthorizeUser) { [AIMobileLib getAccessTokenForScopes:[NSArray arrayWithObject:@"profile"] withOverrideParams:nil delegate:self]; } else if (apiResult.api == kAPIGetAccessToken) { credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyLoginWithAmazon): apiResult.result }; } }}

Use o Login with Amazon: iOS – Swift

Depois de autenticar o login da Amazon, você pode passar o token para o provedor de credenciais do Amazon Cognito no método requestDidSucceed de AMZNAccessTokenDelegate:

func requestDidSucceed(apiResult: APIResult!) { if apiResult.api == API.AuthorizeUser { AIMobileLib.getAccessTokenForScopes(["profile"], withOverrideParams: nil, delegate: self) } else if apiResult.api == API.GetAccessToken { credentialsProvider.logins = [AWSCognitoLoginProviderKey.LoginWithAmazon.rawValue: apiResult.result] } }

Use o Login with Amazon: JavaScript

Depois que o usuário se autentica com o Login with Amazon e é redirecionado de volta para o site, o access_token Login with Amazon é fornecido na string de consulta. Passe esse token para mapear as credenciais de login.

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'www.amazon.com': 'Amazon Access Token' } });

Use o Login with Amazon: Xamarin

Xamarin para Android

AmazonAuthorizationManager manager = new AmazonAuthorizationManager(this, Bundle.Empty); var tokenListener = new APIListener { Success = response => { // Get the auth token var token = response.GetString(AuthzConstants.BUNDLE_KEY.Token.Val); credentials.AddLogin("www.amazon.com", token); } }; // Try and get existing login manager.GetToken(new[] { "profile" }, tokenListener);

Xamarin para iOS

Em AppDelegate.cs, insira o seguinte:

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation) { // Pass on the url to the SDK to parse authorization code from the url bool isValidRedirectSignInURL = AIMobileLib.HandleOpenUrl (url, sourceApplication); if(!isValidRedirectSignInURL) return false; // App may also want to handle url return true; }

Depois, em ViewController.cs, faça o seguinte:

public override void ViewDidLoad () { base.LoadView (); // Here we create the Amazon Login Button btnLogin = UIButton.FromType (UIButtonType.RoundedRect); btnLogin.Frame = new RectangleF (55, 206, 209, 48); btnLogin.SetTitle ("Login using Amazon", UIControlState.Normal); btnLogin.TouchUpInside += (sender, e) => { AIMobileLib.AuthorizeUser (new [] { "profile"}, new AMZNAuthorizationDelegate ()); }; View.AddSubview (btnLogin); } // Class that handles Authentication Success/Failure public class AMZNAuthorizationDelegate : AIAuthenticationDelegate { public override void RequestDidSucceed(ApiResult apiResult) { // Your code after the user authorizes application for requested scopes var token = apiResult["access_token"]; credentials.AddLogin("www.amazon.com",token); } public override void RequestDidFail(ApiError errorResponse) { // Your code when the authorization fails InvokeOnMainThread(() => new UIAlertView("User Authorization Failed", errorResponse.Error.Message, null, "Ok", null).Show()); } }