Para usar a federação de identidades na Web, sua aplicação precisa assumir o perfil do IAM que você criou. A partir daí, o aplicativo honra a política de acesso que você anexou ao perfil.
No tempo de execução, se o seu aplicativo usa a federação de identidades na web, ele deverá seguir estas etapas:
-
Autentique-se com um provedor de identidade de terceiros. Seu aplicativo deve chamar o provedor de identidade usando uma interface fornecida por ele. A maneira exata em que você autentica o usuário depende do provedor e em que plataforma seu aplicativo está em execução. Normalmente, se o usuário ainda não estiver conectado, o provedor de identidade exibe uma página de login para esse provedor.
Depois de autenticar o usuário, o provedor de identidade retorna um token de identidade da web para seu aplicativo. O formato desse token depende do fornecedor, mas geralmente é uma string muito longa.
-
Obtenha credenciais de segurança temporárias da AWS. Para fazer isso, sua aplicação envia uma solicitação
AssumeRoleWithWebIdentity
para o AWS Security Token Service (AWS STS). Essa solicitação contém o seguinte:-
O token de identidade da web da etapa anterior
-
O ID do aplicativo do provedor de identidade
-
O nome do recurso da Amazon (ARN) do perfil do IAM que você criou junto a este provedor de identidade para esta aplicação
O AWS STS retorna um conjunto de credenciais de segurança da AWS que expira depois de um determinado período de tempo (por padrão, 3.600 segundos).
Veja a seguir uma solicitação e resposta de exemplo de uma ação
AssumeRoleWithWebIdentity
no AWS STS. O token de identidade da web foi obtido do provedor de identidade Login with Amazon.GET / HTTP/1.1 Host: sts.amazonaws.com Content-Type: application/json; charset=utf-8 URL: https://sts.amazonaws.com/?ProviderId=www.amazon.com &DurationSeconds=900&Action=AssumeRoleWithWebIdentity &Version=2011-06-15&RoleSessionName=web-identity-federation &RoleArn=arn:aws:iam::123456789012:role/GameRole &WebIdentityToken=Atza|IQEBLjAsAhQluyKqyBiYZ8-kclvGTYM81e...(remaining characters omitted)
<AssumeRoleWithWebIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <AssumeRoleWithWebIdentityResult> <SubjectFromWebIdentityToken>amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE</SubjectFromWebIdentityToken> <Credentials> <SessionToken>AQoDYXdzEMf//////////wEa8AP6nNDwcSLnf+cHupC...(remaining characters omitted)</SessionToken> <SecretAccessKey>8Jhi60+EWUUbbUShTEsjTxqQtM8UKvsM6XAjdA==</SecretAccessKey> <Expiration>2013-10-01T22:14:35Z</Expiration> <AccessKeyId>06198791C436IEXAMPLE</AccessKeyId> </Credentials> <AssumedRoleUser> <Arn>arn:aws:sts::123456789012:assumed-role/GameRole/web-identity-federation</Arn> <AssumedRoleId>AROAJU4SA2VW5SZRF2YMG:web-identity-federation</AssumedRoleId> </AssumedRoleUser> </AssumeRoleWithWebIdentityResult> <ResponseMetadata> <RequestId>c265ac8e-2ae4-11e3-8775-6969323a932d</RequestId> </ResponseMetadata> </AssumeRoleWithWebIdentityResponse>
-
-
Acesse os recursos da AWS. A resposta do AWS STS contém informações de que seu aplicativo precisa para acessar recursos do DynamoDB:
-
Os campos
AccessKeyID
,SecretAccessKey
eSessionToken
contêm credenciais de segurança válidas apenas para este usuário e este aplicativo. -
O campo
Expiration
significa o limite de tempo dessas credenciais. Depois disso, elas não são mais válidas. -
O campo
AssumedRoleId
contém o nome de um perfil do IAM específico da sessão que foi assumida pela aplicação. A aplicação honra os controles de acesso do documento de política do IAM durante esta sessão. -
O campo
SubjectFromWebIdentityToken
contém o ID exclusivo que aparece em uma variável de política do IAM para esse provedor de identidade específico. Veja a seguir as variáveis de política do IAM para provedores compatíveis, e alguns valores de exemplo para elas:Variável de política Valor de exemplo ${www.amazon.com:user_id}
amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE
${graph.facebook.com:id}
123456789
${accounts.google.com:sub}
123456789012345678901
-
Por obter políticas do IAM de exemplo nas quais essas variáveis de política são usadas, consulte Políticas de exemplo: usar condições para controle de acesso refinado.
Para obter mais informações sobre como o AWS STS gera credenciais de acesso temporárias, consulte Solicitação de credenciais de segurança temporárias no Guia do usuário do IAM.