Configurando um provedor SAML como um IdP do grupo 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 um provedor SAML como um IdP do grupo de identidades

O Amazon Cognito oferece suporte à autenticação com provedores de identidade (IdPs) por meio da 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.

Como adicionar um provedor de identidades (IdP) SAML
  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. Escolha SAML.

  5. Escolha um provedor de identidade SAML do IAM IdPs em seuConta da AWS. Se você quiser adicionar um novo provedor SAML, selecione Criar provedor para navegar até o console do IAM.

  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).

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. Com muitos IdPs, você pode especificar uma URL que o IdP pode usar para ler informações e certificados de terceiros confiáveis 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.

Quando o IdP SAML inclui mais de um certificado de assinatura nos metadados do SAML, no login, o grupo de usuários determina que a declaração do SAML é válida se corresponder a qualquer certificado nos metadados do SAML.

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 Logins mapa incluem GetId, GetCredentialsForIdentityGetOpenIdToken, e GetOpen ID. TokenForDeveloperIdentity 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"; }