

# Configurar declarações SAML para a resposta de autenticação
<a name="id_roles_providers_create_saml_assertions"></a>

Após a verificação da identidade de um usuário na sua organização, o provedor de identidades (IdP) externo envia uma resposta de autenticação ao URL do endpoint de início de sessão da AWS. Essa resposta é uma solicitação POST que inclui um token SAML que segue o padrão [Vinculação POST de HTTP para SAML 2.0](http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf) e contém os seguintes elementos ou *solicitações*. Você configura essas solicitações em seu IdP compatível com SAML. Consulte a documentação de seu IdP para obter instruções sobre como inserir essas solicitações.

Quando o IdP envia a resposta contendo as solicitações para a AWS, muitas das solicitações de entrada são mapeadas para as chaves de contexto da AWS. Essas chaves de contexto podem ser verificadas nas políticas do IAM usando o elemento `Condition`. Há uma lista de mapeamentos disponíveis na seção [Mapeamento de atributos SAML para chaves de contexto de política de confiança da AWS](#saml-attribute-mapping).

## `Subject` e da `NameID`
<a name="saml_subject-name-id"></a>

A resposta deve incluir exatamente um elemento `SubjectConfirmation` com um elemento `SubjectConfirmationData` que inclui ambos os atributos `NotOnOrAfter` e `Recipient`. O atributo Recipient deve incluir um valor que corresponda ao URL do endpoint de início de sessão da AWS. Seu IdP pode usar o termo `ACS`, `Recipient` ou `Target` para fazer referência a esse atributo.

Se a criptografia SAML for necessária, o URL de início de sessão deverá incluir o identificador exclusivo que a AWS atribui ao seu provedor de SAML, o qual você pode encontrar na página de detalhes do provedor de identidade. O exemplo a seguir mostra o formato do URL de início de sessão com o `region-code` opcional.

`https://region-code.signin.aws.amazon.com/saml`

No exemplo a seguir, o URL de início de sessão inclui um identificador exclusivo que exige que /acs/ seja anexado ao caminho de início de sessão.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

Para obter uma lista dos possíveis valores de *region-code*, consulte a coluna **Região** em [Endpoints de login da AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Para o valor AWS, também é possível usar o endpoint de sign-in global `https://signin.aws.amazon.com/saml`.

Os elementos `NameID` podem ter o valor persistente, transitório ou consistir no URI de formato completo, conforme fornecido pela solução IdP. O valor persistente indica que o valor em `NameID` é o mesmo para um usuário entre as sessões. Se o valor for transitório, o usuário terá um valor `NameID` diferente para cada sessão. As interações de login único oferecem suporte aos seguintes tipos de identificadores:
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:entity`

O trecho a seguir mostra um exemplo. Substitua os valores marcados pelos seus próprios valores.

```
<Subject>
  <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">_cbb88bf52c2510eabe00c1642d4643f41430fe25e3</NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData NotOnOrAfter="2013-11-05T02:06:42.876Z" Recipient="https://region-code.signin.aws.amazon.com/saml/SAMLSP4SHN3UIS2D558H46"/>
  </SubjectConfirmation>
</Subject>
```

**Importante**  
A chave de contexto `saml:aud` vem do atributo *destinatário* SAML porque é o equivalente SAML ao campo de público do OIDC, por exemplo, `accounts.google.com:aud`.

## `PrincipalTag`Atributo SAML
<a name="saml_role-session-tags"></a>

(Opcional) Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}`. Este elemento permite que você passe atributos como tags de sessão na declaração do SAML. Para obter mais informações sobre tags de sessão, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

Para passar atributos como tags de sessão, inclua o elemento `AttributeValue` que especifica o valor da tag. Por exemplo, para passar os pares chave-valor de tag `Project` = `Marketing` e `CostCenter` = `12345`, use o atributo a seguir. Inclua um elemento `Attribute` separado para cada tag.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Marketing</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
```

Para definir as tags acima como transitivas, inclua outro elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`. Ele é um atributo multivalor opcional que define suas tags de sessão como transitivas. As tags transitivas persistem quando você usa a sessão do SAML para assumir outra função na AWS. Isso é conhecido como [encadeamento de funções](id_roles.md#iam-term-role-chaining). Por exemplo, para definir as tags `Principal` e `CostCenter` como transitivas, use o atributo a seguir para especificar as chaves.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>CostCenter</AttributeValue>
</Attribute>
```

## `Role`Atributo SAML
<a name="saml_role-attribute"></a>

Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/Role` Esse elemento contém um ou mais elementos `AttributeValue` que listam o provedor de identidade do IAM e a função para a qual o usuário é mapeado pelo IdP. A função e o provedor de identidade do IAM são especificados como um par de ARNs delimitado por vírgulas no mesmo formato que os parâmetros `RoleArn` e `PrincipalArn` que são passados para [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html). Esse elemento deve conter pelo menos um par de provedor e função (elemento `AttributeValue`) e pode conter vários pares. Se o elemento contiver vários pares, será solicitado que o usuário escolha qual perfil assumir quando usar o WebSSO para fazer login no Console de gerenciamento da AWS.

**Importante**  
O valor do atributo `Name` na tag `Attribute` faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como `https://aws.amazon.com/SAML/Attributes/Role`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
</Attribute>
```

## `RoleSessionName`Atributo SAML
<a name="saml_role-session-attribute"></a>

Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/RoleSessionName` Este elemento contém um elemento `AttributeValue` que fornece um identificador para as credenciais temporárias que são emitidas quando a função é assumida. Você pode usar isso para associar as credenciais temporárias ao usuário que está usando sua aplicação. Esse elemento é usado para exibir as informações do usuário no Console de gerenciamento da AWS. O valor no elemento `AttributeValue` deve ter entre 2 e 64 caracteres, pode conter apenas caracteres alfanuméricos, sublinhados e os seguintes caracteres: **. , \$1 = @ -** (hífen). Ele nome não pode conter espaços. O valor é geralmente um ID de usuário (`john`) ou um endereço de e-mail (`johndoe@example.com`). Ele não deve ser um valor que inclua espaço, como o nome de exibição de um usuário (`John Doe`).

**Importante**  
O valor do atributo `Name` na tag `Attribute` faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como `https://aws.amazon.com/SAML/Attributes/RoleSessionName`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName">
  <AttributeValue>user-id-name</AttributeValue>
</Attribute>
```

## `SessionDuration`Atributo SAML
<a name="saml_role-session-duration"></a>

(Opcional) Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/SessionDuration`. Esse elemento contém um elemento `AttributeValue` que especifica por quanto tempo o usuário pode acessar o Console de gerenciamento da AWS antes de precisar solicitar novas credenciais temporárias. O valor é um número inteiro que representa o número de segundos da sessão. O valor pode variar de 900 segundos (15 minutos) a 43.200 segundos (12 horas). Se esse atributo não estiver presente, a credencial será válida por uma hora (o valor padrão do parâmetro `DurationSeconds` da API `AssumeRoleWithSAML`).

Para usar esse atributo, você deve configurar o provedor SAML para fornecer acesso de logon único ao Console de gerenciamento da AWS pelo endpoint da web de entrada do console em `https://region-code.signin.aws.amazon.com/saml`. Para obter uma lista dos possíveis valores de *region-code*, consulte a coluna **Região** em [Endpoints de login da AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Ou você pode usar a seguinte URL: `https://signin.aws.amazon.com/static/saml`. Observe que esse atributo estende sessões apenas para o Console de gerenciamento da AWS. Ele não pode ampliar a vida útil de outras credenciais. No entanto, se estiver presente em uma chamada de API `AssumeRoleWithSAML`, ele poderá ser usado para *abreviar* a duração da sessão. O tempo útil padrão das credenciais retornadas pela chamada é de 60 minutos. 

Observe também que, se um atributo `SessionNotOnOrAfter` também estiver definido, o ***menor valor*** entre os dois atributos, `SessionDuration` ou `SessionNotOnOrAfter`, estabelecerá a duração máxima da sessão do console.

Quando você ativa as seções do console com uma duração estendida, o risco de comprometimento das credenciais aumenta. Para ajudar a reduzir esse risco, você pode desabilitar imediatamente as sessões ativas do console para qualquer função escolhendo a opção **Revoke Sessions** (Revogar sessões) na página **Role Summary** (Resumo da função) no console do IAM. Para obter mais informações, consulte [Revogar as credenciais de segurança temporárias do perfil do IAM](id_roles_use_revoke-sessions.md). 

**Importante**  
O valor do atributo `Name` na tag `Attribute` faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como `https://aws.amazon.com/SAML/Attributes/SessionDuration`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SessionDuration">
  <AttributeValue>1800</AttributeValue>
</Attribute>
```

## `SourceIdentity`Atributo SAML
<a name="saml_sourceidentity"></a>

(Opcional) Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/SourceIdentity`. Este elemento contém um elemento `AttributeValue` que fornece um identificador da pessoa ou da aplicação que está usando uma função do IAM. O valor da identidade-fonte persiste quando você usa a sessão do SAML para assumir outra função na AWS conhecida como [encadeamento de funções](id_roles.md#iam-term-role-chaining). O valor da identidade-fonte está presente na solicitação para cada ação executada durante a sessão da função. O valor definido não pode ser alterado durante a sessão da função. Os administradores podem então usar logs do AWS CloudTrail para monitorar e auditar as informações de identidade-fonte para determinar quem executou ações com funções compartilhadas.

O valor no elemento `AttributeValue` deve ter entre 2 e 64 caracteres, pode conter apenas caracteres alfanuméricos, sublinhados e os seguintes caracteres: **. , \$1 = @ -** (hífen). Ele nome não pode conter espaços. O valor geralmente é um atributo associado ao usuário, como um id de usuário (`john`) ou um endereço de e-mail (`johndoe@example.com`). Ele não deve ser um valor que inclua espaço, como o nome de exibição de um usuário (`John Doe`). Para obter mais informações sobre como usar a identidade-fonte, consulte [Monitorar e controlar ações realizadas com funções assumidas](id_credentials_temp_control-access_monitor.md).

**Importante**  
Se sua asserção SAML estiver configurada para usar o atributo [`SourceIdentity`](#saml_sourceidentity), sua política de confiança da função também deverá incluir a ação `sts:SetSourceIdentity`, caso contrário, a operação de assumir função falhará. Para obter mais informações sobre como usar a identidade-fonte, consulte [Monitorar e controlar ações realizadas com funções assumidas](id_credentials_temp_control-access_monitor.md).

Para passar um atributo de identidade-fonte, inclua o elemento `AttributeValue` que especifica o valor da identidade-fonte. Por exemplo, para passar a identidade-fonte `Diego` use o atributo a seguir.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
  <AttributeValue>Diego</AttributeValue>
```

## Mapeamento de atributos SAML para chaves de contexto de política de confiança da AWS
<a name="saml-attribute-mapping"></a>

As tabelas desta seção listam atributos SAML utilizados com frequência e como eles são mapeados para chaves de contexto de condições de política de confiança na AWS. É possível usar essas chaves para controlar o acesso a um perfil. Para isso, compare as chaves com os valores incluídos nas declarações que acompanham uma solicitação de acesso SAML.

**Importante**  
Essas chaves estão disponíveis apenas em políticas de confiança do IAM (políticas que determinam quem pode assumir uma função) e não são aplicáveis a políticas de permissões.

Na tabela de atributos eduPerson e eduOrg, os valores são digitados como strings ou listas de strings. Para valores de string, você pode testar esses valores em políticas de confiança do IAM usando condições `StringEquals` ou `StringLike`. Para valores que contêm uma lista de strings, você pode usar os `ForAnyValue`operadores definidos de política`ForAllValues` [ e ](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys) para testar os valores nas políticas de confiança.

**nota**  
Você deve incluir apenas uma solicitação por chave de contexto da AWS. Se você incluir mais de uma, apenas uma delas será mapeada. 

A tabela a seguir mostra os atributos eduPerson e eduOrg.


| Atributo eduPerson ou eduOrg (chave `Name`) | É mapeado para essa chave de contexto da AWS (chave `FriendlyName`) | Tipo | 
| --- | --- | --- | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.1`   |   `eduPersonAffiliation`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.2`   |   `eduPersonNickname`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.3`   |   `eduPersonOrgDN`   |  String  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.4`   |   `eduPersonOrgUnitDN`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.5`   |   `eduPersonPrimaryAffiliation`   |  String  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.6`   |   `eduPersonPrincipalName`   |  String  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.7`   |   `eduPersonEntitlement`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.8`   |   `eduPersonPrimaryOrgUnitDN`   |  String  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.9`   |   `eduPersonScopedAffiliation`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.10`   |   `eduPersonTargetedID`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.11`   |   `eduPersonAssurance`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.2`   |   `eduOrgHomePageURI`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.3`   |   `eduOrgIdentityAuthNPolicyURI`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.4`   |   `eduOrgLegalName`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.5`   |   `eduOrgSuperiorURI`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.6`   |   `eduOrgWhitePagesURI`   |  Lista de strings  | 
|   `urn:oid:2.5.4.3`   |   `cn`   |  Lista de strings  | 

A tabela a seguir mostra atributos do Active Directory.


| Atributo do AD | É mapeado para essa chave de contexto da AWS | Tipo | 
| --- | --- | --- | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`  |  `name`  |  String  | 
|  `http://schemas.xmlsoap.org/claims/CommonName`  |  `commonName`  |  String  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname`  |  `givenName`  |  String  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname`  |  `surname`  |  String  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`  |  `mail`  |  String  | 
|  `http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid`  |  `uid`  |  String  | 

A tabela a seguir mostra atributos do X.500.


| Atributo X.500 | É mapeado para essa chave de contexto da AWS | Tipo | 
| --- | --- | --- | 
|  `2.5.4.3`  |  `commonName`  |  String  | 
|  `2.5.4.4`  |  `surname`  |  String  | 
|  `2.4.5.42`  |  `givenName`  |  String  | 
|  `2.5.4.45`  |  `x500UniqueIdentifier`  |  String  | 
|  `0.9.2342.19200300100.1.1`  |  `uid`  |  String  | 
|  `0.9.2342.19200300100.1.3`  |  `mail`  |  String  | 
|  `0.9.2342.19200300.100.1.45`  |  `organizationStatus`  |  String  | 