

# Criar aplicação para usar a federação de identidades na Web
<a name="WIF.RunningYourApp"></a>

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:

1. **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.

1. **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>
   ```

1. **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` e `SessionToken` 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:  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/WIF.RunningYourApp.html)

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](specifying-conditions.md#FGAC_DDB.Examples).

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) no *Guia do usuário do IAM*.