Usar identidade federada da web para autenticar usuários - AWS SDK for JavaScript

Anunciamos o próximo fim do suporte para o AWS SDK for JavaScript v2. Recomendamos migrar para o AWS SDK for JavaScript v3. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

Usar identidade federada da web para autenticar usuários

Você pode configurar diretamente os provedores de identidade individuais para acessar recursos da AWS usando a federação de identidades da web. Atualmente, a AWS é compatível com a autenticação de usuários usando a federação de identidades da web por meio de vários provedores de identidade:

Você deve primeiramente registrar o aplicativo com os provedores compatíveis com o aplicativo. Crie um perfil do IAM e configure permissões para ele. A função do IAM criada acaba sendo usada para conceder as permissões configuradas para ela por meio do respectivo provedor de identidade. Por exemplo, é possível configurar uma função que permita a usuários conectados por meio do Facebook ter acesso de leitura a um bucket do Amazon S3 específico controlado por você.

Depois que tiver um perfil do IAM com privilégios configurados e um aplicativo registrado com os provedores de identidade escolhido, você poderá configurar o SDK para receber credenciais para o perfil do IAM usando código auxiliar da seguinte maneira:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>/:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com', // this is null for Google WebIdentityToken: ACCESS_TOKEN });

O valor no parâmetro ProviderId depende do provedor de identidade especificado. O valor do parâmetro WebIdentityToken é o token de acesso recuperado de um login bem-sucedido com o provedor de identidade. Para obter mais informações sobre como configurar e recuperar tokens de acesso de cada provedor de identidade, consulte a documentação do provedor de identidade.

Etapa 1: Registrar com provedores de identidade

Para começar, registre um aplicativo com os provedores de identidade escolhidos para dar suporte. Você será solicitado a fornecer informações que identifiquem o aplicativo e possivelmente o autor. Isso garante que os provedores de identidade saibam quem está recebendo as informações do usuário. Em cada caso, o provedor de identidade emitirá um ID do aplicativo usado para configurar funções do usuário.

Etapa 2: Criar um perfil do IAM para um provedor de identidade

Depois de obter o ID do aplicativo do provedor de identidade, acesse o console do IAM no https://console.aws.amazon.com/iam/ para criar um novo perfil do IAM.

Para criar uma função do perfil do IAM para um provedor de identidade
  1. Acesse a seção Roles (Funções) do console e escolha Create New Role (Criar nova função).

  2. Digite um nome para a nova função que ajude a controlar o uso, como facebookIdentity, e escolha Next Step (Próxima etapa).

  3. Em Select Role Type (Selecionar tipo de função), escolha Role for Identity Provider Access (Função de acesso do provedor de identidade).

  4. Em Grant access to web identity providers (Conceder acesso a provedores de identidade da web), escolha Select (Selecionar).

  5. Na lista Identity Provider (Provedor de identidade), escolha o provedor de identidade que você deseja usar nesse perfil do IAM.

    Selecionar função para acesso do provedor de identidade
  6. Digite o ID do aplicativo fornecido pelo provedor de identidade em Application ID (ID do aplicativo) e escolha Next Step (Próxima etapa).

  7. Configurar permissões para os recursos que você deseja expor, permitindo acesso a operações específicas em recursos específicos. Para obter mais informações sobre as permissões do IAM, consulte Visão geral das permissões do IAM do AWS no Manual do usuário do IAM. Analise e, se necessário, personalize a função a relação de confiança da função e escolha Next Step (Próxima etapa).

  8. Anexe políticas adicionais de que você precisa e escolha Next Step (Próxima etapa). Para obter mais informações sobre políticas do IAM, consulte Visão geral das políticas do IAM no Guia do usuário do IAM.

  9. Analise a nova função e escolha Create Role (Criar função).

Forneça outras restrições à função, como o escopo para IDs de usuário específicos. Se a função conceder permissões de gravação aos recursos, verifique o escopo correto da função para usuários com os privilégios corretos. Do contrário, qualquer usuário com uma identidade Amazon, Facebook ou Google será capaz de modificar recursos no aplicativo.

Para obter mais informações sobre como usar a federação de identidades da web no IAM, consulte Sobre federação de identidades da web no Guia de usuário do IAM.

Etapa 3: Obter um token de acesso do provedor após o login

Configure a ação de login para o aplicativo usando o SDK do provedor de identidade. Faça download e instale um SDK JavaScript do provedor de identidade que permita o login do usuário usando OAuth ou OpenID. Para obter informações sobre como fazer download e configurar o código do SDK no aplicativo, consulte a documentação do SDK do provedor de identidade:

Etapa 4: obter credenciais temporárias

Depois que o aplicativo, as funções e as permissões de recursos forem configurados, adicione o código ao aplicativo para obter credenciais temporárias. Essas credenciais são fornecidas por meio do AWS Security Token Service usando a federação de identidades da web. Os usuários fazem login no provedor de identidade, que retorna um token de acesso. Configure o objeto AWS.WebIdentityCredentials usando o ARN do perfil do IAM criado para este provedor de identidade:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com', // Omit this for Google WebIdentityToken: ACCESS_TOKEN // Access token from identity provider });

Os objetos de serviço criados posteriormente terão as credenciais apropriadas. Os objetos criados antes de definir a propriedade AWS.config.credentials não terão as credenciais atuais.

Também é possível criar AWS.WebIdentityCredentials antes de recuperar o token de acesso. Isso permite criar objetos de serviço que dependam de credenciais antes de carregar o token de acesso. Para isso, crie o objeto de credenciais sem o parâmetro WebIdentityToken:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com' // Omit this for Google }); // Create a service object var s3 = new AWS.S3;

Defina WebIdentityToken no retorno de chamada do SDK do provedor de identidade que contenha o token de acesso:

AWS.config.credentials.params.WebIdentityToken = accessToken;