Provedores de identidade SAML (grupos de identidades) - Amazon Cognito

Provedores de identidade SAML (grupos de identidades)

O Amazon Cognito é compatível com autenticação com provedores de identidade (IdPs) por meio do Security Assertion Markup Language 2.0 (SAML 2.0). No Amazon Cognito, é possível usar um IdP compatível com SAML para fornecer um fluxo simples de integração aos usuários. Seu IdP compatível com SAML especifica as funções do IAM que seus usuários podem assumir. Dessa forma, diferentes usuários podem receber diferentes conjuntos de permissões.

Como configurar seu grupo de identidades para um IdP SAML

As etapas a seguir descrevem como configurar o grupo de identidades para usar um IdP baseado em SAML.

nota

Antes de configurar o grupo de identidades para ser compatível com um provedor SAML, primeiro configure o IdP SAML no console do IAM. Para obter mais informações, consulte Integrar provedores de soluções SAML de terceiros com a AWS no Guia do usuário do IAM.

Para configurar o grupo de identidades para ser compatível com um provedor SAML
  1. Faça login no console do Amazon Cognito, escolha Manage Identity Pools (Gerenciar identidades federadas) e Create new identity pool (Criar novo grupo de identidades).

  2. Na seção Authentication providers (Provedores de autenticação), selecione a guia SAML.

  3. Escolha o ARN do provedor SAML e, em seguida, Create Pool (Criar grupo).

Como configurar seu IdP SAML

Depois de criar o provedor SAML, configure o IdP SAML para adicionar uma confiança de terceira parte confiável entre o IdP e a AWS. Vários IdPs permitem que você especifique um URL que eles possam usar para ler informações sobre a terceira parte confiável e certificados de um documento XML. Para AWS, use https://signin.aws.amazon.com/static/saml-metadata.xml. A próxima etapa é configurar a resposta da declaração SAML do IdP para preencher as solicitações que a AWS necessita. Para obter detalhes sobre a configuração de reivindicação, consulte Configuração de declarações SAML para a resposta de autenticação.

Como personalizar a função do usuário com SAML

Ao usar o SAML com a identidade do Amazon Cognito, você pode personalizar a função para o usuário final. O Amazon Cognito só aceita o fluxo avançado com o IdP baseado em SAML. Não é necessário especificar uma função autenticada ou não autenticada para o grupo de identidades para usar um IdP com base em SAML. O atributo de reivindicação https://aws.amazon.com/SAML/Attributes/Role especifica um ou mais pares de ARN de provedor e função delimitados por vírgulas. Essas são as funções que o usuário pode assumir. Você pode configurar o IdP SAML para preencher os atributos de função com base nas informações do atributo de usuário disponíveis no IdP. Se você receber várias funções na declaração SAML, preencha o parâmetro customRoleArn opcional ao chamar getCredentialsForIdentity. O usuário assumirá esse customRoleArn se a função corresponder a uma função na declaração SAML.

Como autenticar usuários com um IdP SAML

Para federar com o IdP baseado em SAML, determine o URL onde o usuário inicia o login. A federação da AWS usa login iniciado pelo IdP. No AD FS 2.0 o URL tem a forma de https://<fqdn>/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices.

Para adicionar compatibilidade com IdP SAML no Amazon Cognito, primeiro autentique os usuários com o provedor de identidade SAML do aplicativo iOS ou Android. O código que você usa para integrar e autenticar com o IdP SAML é específico para os provedores SAML. Assim que autenticar o usuário, você poderá usar APIs do Amazon Cognito para fornecer a declaração SAML resultante à identidade do Amazon Cognito.

Você não pode repetir nem reproduzir uma declaração SAML no mapa Logins da sua solicitação de API de grupo de identidades. Uma declaração SAML reproduzida tem um ID de declaração que duplica o ID de uma resposta anterior da API. As operações de API que podem aceitar uma declaração SAML no mapa Logins incluem GetId, GetCredentialsForIdentity, GetOpenIdToken e GetOpenIDTokenForDeveloperIdentity. Você pode reproduzir um ID de declaração SAML uma vez por solicitação de API em um fluxo de autenticação de grupo de identidades. Por exemplo, você pode fornecer a mesma declaração SAML em uma solicitação GetId e em uma solicitação GetCredentialsForIdentity subsequente, mas não em uma segunda solicitação GetId.

Android

Se você usar o SDK do Android, será possível preencher o mapa de logins com a declaração do SAML da forma a seguir.

Map logins = new HashMap(); logins.put("arn:aws:iam::aws account id:saml-provider/name", "base64 encoded assertion response"); // Now this should be set to CognitoCachingCredentialsProvider object. CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(context, identity pool id, region); credentialsProvider.setLogins(logins); // If SAML assertion contains multiple roles, resolve the role by setting the custom role credentialsProvider.setCustomRoleArn("arn:aws:iam::aws account id:role/customRoleName"); // This should trigger a call to the Amazon Cognito service to get the credentials. credentialsProvider.getCredentials();

iOS

Caso esteja usando o SDK do iOS, é possível fornecer a declaração do SAML em AWSIdentityProviderManager da forma a seguir.

- (AWSTask<NSDictionary<NSString*,NSString*> *> *) logins { //this is hardcoded for simplicity, normally you would asynchronously go to your SAML provider //get the assertion and return the logins map using a AWSTaskCompletionSource return [AWSTask taskWithResult:@{@"arn:aws:iam::aws account id:saml-provider/name":@"base64 encoded assertion response"}]; } // If SAML assertion contains multiple roles, resolve the role by setting the custom role. // Implementing this is optional if there is only one role. - (NSString *)customRoleArn { return @"arn:aws:iam::accountId:role/customRoleName"; }