

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

# Como usar provedores de identidade SAML com um grupo de usuários
<a name="cognito-user-pools-saml-idp"></a>

Você pode determinar que os usuários da aplicação web e do aplicativo móvel façam login por meio de um provedor de identidades (IdP) SAML, como o [Microsoft Active Directory Federation Services (ADFS)](https://msdn.microsoft.com/en-us/library/bb897402.aspx) ou o [Shibboleth](http://www.shibboleth.net/). Você deve escolher um IdP SAML compatível com o [padrão SAML 2.0](http://saml.xml.org/saml-specifications).

Com o login gerenciado, o Amazon Cognito autentica usuários de IdP locais e terceirizados e emite tokens web JSON (). JWTs Com os tokens que o Amazon Cognito emite, você pode consolidar várias fontes de identidade em um padrão universal do OpenID Connect (OIDC) em todas as aplicações. O Amazon Cognito pode processar declarações SAML de seus fornecedores terceirizados nesse padrão de SSO. Você pode criar e gerenciar um SAML IdP na, por meio da ou com Console de gerenciamento da AWS a API de AWS CLI grupos de usuários do Amazon Cognito. Para criar seu primeiro IdP SAML no Console de gerenciamento da AWS, consulte. [Como adicionar e gerenciar provedores de identidade SAML em um grupo de usuários](cognito-user-pools-managing-saml-idp.md)

![\[Visão geral de autenticação com login do SAML\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/scenario-authentication-saml.png)


**nota**  
A federação com login por meio de um IdP de terceiros é um recurso dos grupos de usuários do Amazon Cognito. Os bancos de identidades do Amazon Cognito, às vezes chamados de identidades federadas do Amazon Cognito, são uma implementação da federação que você deve configurar separadamente em cada banco. Um grupo de usuários pode ser um IdP de terceiros para um banco de identidades. Para obter mais informações, consulte [Banco de identidades do Amazon Cognito](cognito-identity.md).

## Referência rápida para configuração do IdP
<a name="cognito-user-pools-saml-idp-reference"></a>

É necessário configurar o IdP SAML para aceitar solicitação e enviar respostas ao grupo de usuários. A documentação de seu para IdP SAML conterá informações sobre como adicionar o grupo de usuários como uma aplicação ou terceira parte confiável para o IdP SAML 2.0. A documentação a seguir contém os valores que você deve fornecer para o ID da entidade SP e o URL do Serviço do consumidor de Declaração (ACS).Referência rápida de valores SAML do grupo de usuários

**ID de entidade SP**  

```
urn:amazon:cognito:sp:us-east-1_EXAMPLE
```

**URL DO ACS**  

```
https://Your user pool domain/saml2/idpresponse
```

Você deve configurar seu grupo de usuários para apoiar o provedor de identidades. As etapas detalhadas para adicionar um IdP SAML externo são as seguintes:

1. Faça o download dos metadados SAML do seu IdP ou recupere o URL para o seu endpoint de metadados. Consulte [Como configurar seu provedor de identidades SAML de terceiros](cognito-user-pools-integrating-3rd-party-saml-providers.md).

1. Adicione um novo IdP ao seu grupo de usuários. Faça o upload dos metadados do SAML ou forneça o URL dos metadados. Consulte [Como adicionar e gerenciar provedores de identidade SAML em um grupo de usuários](cognito-user-pools-managing-saml-idp.md).

1. Atribua o IdP aos seus clientes de aplicações. Consulte [Configurações específicas da aplicação com clientes de aplicação](user-pool-settings-client-apps.md).

**Topics**
+ [Referência rápida para configuração do IdP](#cognito-user-pools-saml-idp-reference)
+ [Coisas que você deve saber sobre o SAML IdPs nos grupos de usuários do Amazon Cognito](cognito-user-pools-saml-idp-things-to-know.md)
+ [Diferenciação entre maiúsculas e minúsculas dos nomes de usuário SAML](#saml-nameid-case-sensitivity)
+ [Como configurar seu provedor de identidades SAML de terceiros](cognito-user-pools-integrating-3rd-party-saml-providers.md)
+ [Como adicionar e gerenciar provedores de identidade SAML em um grupo de usuários](cognito-user-pools-managing-saml-idp.md)
+ [Iniciação de sessão SAML em grupos de usuários do Amazon Cognito](cognito-user-pools-SAML-session-initiation.md)
+ [Como desconectar usuários do SAML com logout único](cognito-user-pools-saml-idp-sign-out.md)
+ [Assinatura e criptografia SAML](cognito-user-pools-SAML-signing-encryption.md)
+ [Nomes e identificadores do provedor de identidades SAML](cognito-user-pools-managing-saml-idp-naming.md)

# Coisas que você deve saber sobre o SAML IdPs nos grupos de usuários do Amazon Cognito
<a name="cognito-user-pools-saml-idp-things-to-know"></a>

A implementação de um IdP SAML 2.0 vem com alguns requisitos e restrições. Consulte esta seção ao implementar seu IdP. Você também encontrará informações úteis para solucionar erros durante a federação do SAML com um grupo de usuários.

**O Amazon Cognito processa declarações do SAML para você**  
Os grupos de usuários do Amazon Cognito são compatíveis com a federação SAML 2.0 com endpoints de pós-vinculação. Isso elimina a necessidade de a aplicação recuperar ou analisar as respostas de afirmação do SAML, pois o grupo de usuários recebe diretamente a resposta do SAML de seu IdP por meio de um agente de usuário. Seu grupo de usuários atua como um provedor de serviços (SP) em nome da aplicação. O Amazon Cognito é compatível com a autenticação única (SSO) iniciada por SP e por IdP, conforme descrito nas seções 5.1.2 e 5.1.4 da [Visão geral técnica do SAML V2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html).

**Fornecer um certificado de assinatura de IdP válido**  
O certificado de assinatura nos metadados do seu provedor SAML não deve estar vencido quando você for configurar o IdP do SAML em seu grupo de usuários.

**Grupos de usuários aceitam vários certificados de assinatura**  
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. Cada certificado de assinatura deve ter no máximo 4.096 caracteres.

**Manter o parâmetro do estado de retransmissão**  
O Amazon Cognito e o IdP SAML mantêm as informações da sessão com um parâmetro `relayState`.  

1. O Amazon Cognito é compatível com valores de `relayState` maiores do que 80 bytes. Embora as especificações do SAML afirmem que o valor de `relayState` “não deve exceder 80 bytes de comprimento”, a prática atual do setor geralmente diverge desse comportamento. Como consequência, rejeitar valores de `relayState` maiores que 80 bytes quebrará muitas integrações padrão de provedor de SAML.

1. O token `relayState` é uma referência invisível às informações de estado mantidas pelo Amazon Cognito. O Amazon Cognito não garante o conteúdo do parâmetro `relayState`. Não analise o respectivo conteúdo de forma que sua aplicação dependa do resultado. Para obter mais informações, consulte a [SAML 2.0 specification](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html) (Especificação do SAML 2.0).

**Identificar o endpoint do ACS**  
Seu provedor de identidade SAML exige que você defina um endpoint de consumidor de declaração. Seu IdP redireciona seus usuários para esse endpoint com sua declaração SAML. Configure o endpoint a seguir no domínio do grupo de usuários para a vinculação POST SAML 2.0 no provedor de identidades SAML.  

```
https://Your user pool domain/saml2/idpresponse
With an Amazon Cognito domain:
https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse
With a custom domain:
https://auth.example.com/saml2/idpresponse
```
Consulte [Como configurar um domínio de grupo de usuários](cognito-user-pools-assign-domain.md) para obter mais informações sobre domínios do grupo de usuários.

**Sem declarações reproduzidas**  
Você não pode repetir nem *reproduzir* uma declaração de SAML em seu`saml2/idpresponse` endpoint do Amazon Cognito. Uma declaração de SAML reproduzida tem um ID que duplica o ID de uma resposta anterior do IdP.

**O ID do grupo de usuários é o ID da entidade SP**  
É necessário fornecer o ID do grupo de usuários ao IdP no (SP) `urn` do provedor de serviços, também chamado de *URI de público* ou *ID da entidade SP*. O URI de público do grupo de usuários tem o formato a seguir.  

```
urn:amazon:cognito:sp:us-east-1_EXAMPLE
```
Você pode encontrar o ID do grupo de usuários na **Visão geral do grupo de usuários**, no [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home).

**Mapear todos os atributos obrigatórios**  
Configure seu IdP SAML para que forneça valores para todos os atributos definidos como necessários em seu grupo de usuários. Por exemplo, `email` é um atributo obrigatório comum para grupos de usuários. Para que seus usuários possam fazer login, suas declarações do IdP SAML devem incluir uma declaração a ser mapeada para o **atributo do grupo de usuários** `email`. Para ter mais informações sobre mapeamento de atributos, consulte [Mapeamento de atributos de IdP para perfis e tokens](cognito-user-pools-specifying-attribute-mapping.md).

**O formato de declaração tem requisitos específicos**  
O IdP do SAML deve incluir as seguintes reivindicações na declaração do SAML:  
+ Uma reivindicação de `NameID`. O Amazon Cognito associa uma declaração de SAML ao usuário de destino por `NameID`. Se houver alterações de `NameID`, o Amazon Cognito considerará que a declaração é para um novo usuário. O atributo definido em `NameID` na configuração do IdP deve ter um valor persistente. Para atribuir usuários do SAML a um perfil de usuário consistente no grupo de usuários, atribua sua declaração `NameID` a partir de um atributo com um valor que não mude.

  ```
  <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent">
    carlos
  </saml2:NameID>
  ```

  O `Format` na declaração de `NameID` de `urn:oasis:names:tc:SAML:1.1:nameid-format:persistent` indica que seu IdP está transmitindo um valor imutável. O Amazon Cognito não exige essa declaração de formato. Ele atribui um formato de `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified` quando o IdP não especifica um formato da declaração `NameID`. Esse comportamento está em conformidade com a seção 2.2.2 *Nome do tipo complexo IDType*, [da especificação SAML](https://groups.oasis-open.org/higherlogic/ws/public/download/35711/sstc-saml-core-errata-2.0-wd-06-diff.pdf/latest) 2.0.
+ Uma reivindicação `AudienceRestriction` com um valor de `Audience` que define o ID da entidade SP do grupo de usuários como o destino da resposta.

  ```
  <saml:AudienceRestriction>
    <saml:Audience> urn:amazon:cognito:sp:us-east-1_EXAMPLE
  </saml:AudienceRestriction>
  ```
+ Para login único iniciado pelo SP, um elemento `Response` com valor `InResponseTo` do ID da solicitação SAML original.

  ```
  <saml2p:Response Destination="https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse" ID="id123" InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" IssueInstant="Date-time stamp" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  ```
**nota**  
As declarações de SAML iniciadas pelo IdP *não* devem conter um valor `InResponseTo`.
+ Um elemento `SubjectConfirmationData` com um valor de `Recipient` do endpoint `saml2/idpresponse` do grupo de usuários e, para SAML iniciado pelo SP, um valor de `InResponseTo` que corresponde ao ID da solicitação SAML original.

  ```
  <saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="Date-time stamp" Recipient="https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse"/>
  ```

**Solicitações de login iniciadas pelo SP**  
Quando o [Autorizar endpoint](authorization-endpoint.md) direciona o usuário para a página de login do IdP, o Amazon Cognito inclui uma *solicitação SAML* em um parâmetro de URL da solicitação `HTTP GET`. A solicitação SAML contém informações sobre seu grupo de usuários, incluindo endpoint do ACS. Como opção, você pode aplicar uma assinatura criptográfica a essas solicitações.

**Assinar solicitações e criptografar respostas**  
Cada grupo de usuários com um provedor de SAML gera um par de chaves assimétrico e um *certificado de assinatura* para uma assinatura digital que o Amazon Cognito atribui às solicitações de SAML. Cada IdP de SAML externo que você configura para aceitar uma resposta de SAML criptografada faz com que o Amazon Cognito gere um novo par de chaves e um *certificado de criptografia* para esse provedor. Para visualizar e baixar os certificados com a chave pública, escolha seu IdP no menu **Provedores sociais e externos** no console do Amazon Cognito.  
Para estabelecer confiança com as solicitações de SAML do seu grupo de usuários, forneça ao IdP uma cópia do certificado de assinatura SAML 2.0 de seu grupo de usuários. Seu IdP pode ignorar as solicitações de SAML que seu grupo de usuários assinou se você não configurar o IdP para aceitar solicitações assinadas.  

1. O Amazon Cognito aplica uma assinatura digital às solicitações de SAML que o usuário transmite ao IdP. Seu grupo de usuários assina todas as solicitações de logout único (SLO), e você pode configurar seu grupo de usuários para assinar solicitações de autenticação única (SSO) para qualquer IdP externo do SAML. Quando você fornece uma cópia do certificado, o IdP consegue verificar a integridade das solicitações SAML de seus usuários. 

1. Seu IdP SAML pode criptografar respostas do SAML com o certificado de criptografia. Quando você configura um IdP com criptografia SAML, seu IdP só deve enviar respostas criptografadas.

**Codificar caracteres não alfanuméricos**  
O Amazon Cognito não aceita caracteres UTF-8 de 4 bytes (como 😐 ou 𠮷) que o IdP transmite como um valor de atributo. É possível codificar o caractere em Base64, transmiti-lo como texto e, então, decodificá-lo na aplicação.  
No exemplo a seguir, a declaração de atributo não será aceita:  

```
<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
  <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">😐</saml2:AttributeValue>
</saml2:Attribute>
```
Ao contrário do exemplo anterior, a seguinte declaração de atributo será aceita:  

```
<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
  <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">8J+YkA==</saml2:AttributeValue>
</saml2:Attribute>
```

**O endpoint de metadados deve ter uma segurança de camada de transporte válida**  
Se você ver, `InvalidParameterException` ao criar um IdP SAML com uma URL de endpoint de metadados HTTPS, por exemplo, “Erro ao recuperar metadados de”, certifique-se *<metadata endpoint>* de que o endpoint de metadados tenha o SSL configurado corretamente e que haja um certificado SSL válido associado a ele. Para obter mais informações sobre a validação de certificados, consulte [O que é um SSL/TLS certificado](https://aws.amazon.com/what-is/ssl-certificate/)? .

**O endpoint de metadados deve estar em uma porta TCP padrão para HTTP ou HTTPS**  
O Amazon Cognito só aceita metadados URLs para provedores de SAML nas portas TCP padrão 80 para HTTP e 443 para HTTPS. Como prática recomendada de segurança, hospede os metadados SAML em um URL criptografado por TLS com o prefixo `https://`. Insira os metadados URLs no formato *`http://www.example.com/saml2/metadata.xml`* ou*`https://www.example.com/saml2/metadata.xml`*. O console do Amazon Cognito aceita metadados URLs somente com o prefixo. `https://` Você também pode configurar os metadados do IdP com e. [CreateIdentityProvider[UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Clientes de aplicações com SAML iniciado pelo IdP só podem fazer login com SAML**  
Ao ativar o suporte para um IdP do SAML 2.0 que oferece suporte ao login iniciado pelo IdP em um cliente de aplicativo, você só pode adicionar outro SAML IdPs 2.0 a esse cliente de aplicativo. Você não consegue adicionar o diretório de usuários ao grupo de usuários *e* todos os provedores de identidade externos que não sejam SAML a um cliente de aplicação configurado dessa forma.

**As respostas de logout devem usar a vinculação POST**  
O endpoint `/saml2/logout` aceita `LogoutResponse` como solicitações `HTTP POST`. Os grupos de usuários não aceitam respostas de logout com vinculação `HTTP GET`.

**Alternância de certificados de assinatura de metadados**  
O Amazon Cognito armazena em cache os metadados SAML por até 6 horas quando você fornece metadados com um URL. Ao realizar qualquer alternância de certificados de assinatura de metadados, configure sua fonte de metadados para publicar os certificados *originais e novos* por pelo menos 6 horas. Quando o Amazon Cognito atualiza o cache do URL de metadados, ele trata cada certificado como válido e o IdP SAML pode começar a assinar as declarações SAML com o novo certificado. Após esse período, você pode remover o certificado original dos metadados publicados.

## Diferenciação entre maiúsculas e minúsculas dos nomes de usuário SAML
<a name="saml-nameid-case-sensitivity"></a>

Quando um usuário federado tenta fazer login, o provedor de identidades (IdP) SAML passa um `NameId` para o Amazon Cognito na declaração SAML do usuário. O Amazon Cognito identifica um usuário federado SAML por meio da respectiva declaração `NameId`. Independentemente das configurações de diferenciação entre maiúsculas e minúsculas do grupo de usuários, o Amazon Cognito reconhece que um usuário federado voltou de um IdP SAML quando passa uma declaração `NameId` exclusiva e que diferencie maiúsculas e minúsculas. Se você mapear um atributo como `email` para `NameId` e seu usuário alterar o endereço de e-mail, ele não conseguirá fazer login na aplicação.

Mapeie `NameId` em suas declarações SAML de um atributo do IdP que tenha valores que não se alteram.

Por exemplo, Carlos tem um perfil de usuário em seu grupo de usuários que não diferencia maiúsculas e minúsculas de uma declaração SAML dos Serviços de Federação do Active Directory (ADFS) que passou um valor `NameId` de `Carlos@example.com`. Na próxima vez em que Carlos tentar fazer login, seu IdP ADFS passará um valor `NameId` de `carlos@example.com`. Como `NameId` deve apresentar uma correspondência exata de maiúsculas e minúsculas, o login não é bem-sucedido.

Se seus usuários não conseguirem fazer login depois que o respectivo `NameID` mudar, exclua o perfil desses usuários do grupo de usuários. O Amazon Cognito criará novos perfis de usuário na próxima vez em que eles fizerem login.

**Topics**
+ [Referência rápida para configuração do IdP](#cognito-user-pools-saml-idp-reference)
+ [Coisas que você deve saber sobre o SAML IdPs nos grupos de usuários do Amazon Cognito](cognito-user-pools-saml-idp-things-to-know.md)
+ [Diferenciação entre maiúsculas e minúsculas dos nomes de usuário SAML](#saml-nameid-case-sensitivity)
+ [Como configurar seu provedor de identidades SAML de terceiros](cognito-user-pools-integrating-3rd-party-saml-providers.md)
+ [Como adicionar e gerenciar provedores de identidade SAML em um grupo de usuários](cognito-user-pools-managing-saml-idp.md)
+ [Iniciação de sessão SAML em grupos de usuários do Amazon Cognito](cognito-user-pools-SAML-session-initiation.md)
+ [Como desconectar usuários do SAML com logout único](cognito-user-pools-saml-idp-sign-out.md)
+ [Assinatura e criptografia SAML](cognito-user-pools-SAML-signing-encryption.md)
+ [Nomes e identificadores do provedor de identidades SAML](cognito-user-pools-managing-saml-idp-naming.md)

# Como configurar seu provedor de identidades SAML de terceiros
<a name="cognito-user-pools-integrating-3rd-party-saml-providers"></a>

Para adicionar um provedor de identidades (IdP) SAML ao seu grupo de usuários, você deve fazer algumas atualizações de configuração na interface de gerenciamento do IdP. Esta seção descreve como formatar os valores que você deve fornecer ao IdP. Você também aprenderá a recuperar o documento de metadados de URL estático ou ativo que identifica o IdP e suas declarações SAML para o grupo de usuários.

Para configurar soluções do provedor de identidades (IdP) SAML 2.0 de terceiros para funcionar com federação para grupos de usuários do Amazon Cognito, é necessário configurar o IdP SAML para redirecionar ao seguinte URL do Serviço do Consumidor de Declaração (ACS): `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse`. Se o grupo de usuários tiver um domínio do Amazon Cognito, você poderá encontrar o caminho do domínio do grupo de usuários no menu **Domínio** do grupo de usuários no [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home).

Alguns SAML IdPs exigem que você forneça o`urn`, também chamado de URI do público ou ID da entidade SP, no formulário`urn:amazon:cognito:sp:us-east-1_EXAMPLE`. Você pode encontrar o ID do grupo de usuários na **Visão geral do grupo de usuários**, no console do Amazon Cognito.

Você também precisa configurar o IdP SAML para que forneça valores de todos os *atributos obrigatórios* em seu grupo de usuários. Normalmente, `email` é um atributo obrigatório para grupos de usuários. Nesse caso, o IdP SAML precisa fornecer alguma forma de reivindicação `email` em sua declaração SAML, e você precisa mapear a declaração para esse provedor.

As seguintes informações de configuração para soluções IdP SAML 2.0 de terceiros são um bom ponto de partida para configurar a federação com grupos de usuários do Amazon Cognito: Para obter as informações mais atuais, consulte diretamente a documentação do seu provedor.

Para assinar solicitações SAML, você deve configurar seu IdP para confiar nas solicitações assinadas pelo certificado de assinatura do grupo de usuários. Para aceitar respostas SAML criptografadas, configure seu IdP para criptografar *todas* as respostas SAML para seu grupo de usuários. Seu provedor terá a documentação sobre a configuração desses recursos. Para ver um exemplo da Microsoft, consulte [Configurar a criptografia de token SAML do Microsoft Entra](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-saml-token-encryption).

**nota**  
O Amazon Cognito exige apenas o documento de metadados do seu provedor de identidades. O provedor também pode oferecer informações de configuração personalizadas para a federação SAML 2.0 com o IAM ou o Centro de Identidade do AWS IAM. Para saber como configurar a integração com o Amazon Cognito, procure instruções gerais para recuperar o documento de metadados e gerenciar o restante da configuração em seu grupo de usuários.


| Solução | Mais informações | 
| --- | --- | 
| Microsoft Entra ID | [Metadados da federação](https://learn.microsoft.com/en-us/entra/identity-platform/federation-metadata) | 
| Okta | [Como baixar os metadados do IdP e os certificados de assinatura SAML para uma integração de aplicações SAML](https://support.okta.com/help/s/article/Location-to-download-Okta-IDP-XML-metadata-for-a-SAML-app-in-the-new-Admin-User-Interface) | 
| Auth0 | [Configurar Auth0 como provedor de identidades SAML](https://auth0.com/docs/authenticate/protocols/saml/saml-sso-integrations/configure-auth0-saml-identity-provider) | 
| Identidade de ping (PingFederate) | [Exportação de metadados SAML de PingFederate](https://docs.pingidentity.com/integrations/contentful/configuring_single_sign-on/pf_contentful_integration_exporting_saml_metadata_from_pf.html) | 
| JumpCloud | [Notas de configuração do SAML](https://jumpcloud.com/support/saml-configuration-notes) | 
| SecureAuth | [Integração de aplicações SAML](https://docs.secureauth.com/2104/en/saml-application-integration.html) | 

# Como adicionar e gerenciar provedores de identidade SAML em um grupo de usuários
<a name="cognito-user-pools-managing-saml-idp"></a>

Depois de configurar seu provedor de identidades para trabalhar com o Amazon Cognito, você pode adicioná-lo aos seus grupos de usuários e clientes de aplicações. Os procedimentos a seguir demonstram como criar, modificar e excluir provedores SAML em um grupo de usuários do Amazon Cognito.

------
#### [ Console de gerenciamento da AWS ]

Você pode usar o Console de gerenciamento da AWS para criar e excluir provedores de identidade SAML (IdPs).

Antes de criar um IdP SAML, é necessário ter o documento de metadados do SAML, que você obtém do IdP de terceiros. Para obter instruções sobre como obter ou gerar o documento de metadados do SAML necessário, consulte [Como configurar seu provedor de identidades SAML de terceiros](cognito-user-pools-integrating-3rd-party-saml-providers.md).

**Para configurar um IdP SAML 2.0 em seu grupo de usuários**

1. Acesse o [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home). Se solicitado, insira suas credenciais da AWS .

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente na lista ou [crie um grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Clique no menu **Provedores sociais e externos** e selecione **Adicionar um provedor de identidade**.

1. Escolha um IdP **SAML**.

1. Insira um **Nome de provedor**. Você pode passar esse nome amigável em um parâmetro de solicitação `identity_provider` para [Autorizar endpoint](authorization-endpoint.md).

1. Insira **Identifiers** (Identificadores) separados por vírgulas. Um identificador diz ao Amazon Cognito que ele deve conferir o endereço de e-mail que um usuário insere quando faz o acesso e, em seguida, direcioná-lo ao provedor que corresponde ao domínio dele.

1. Escolha **Add sign-out flow** (Adicionar fluxo de desconexão) se quiser que o Amazon Cognito envie solicitações de desconexão assinadas ao seu provedor quando um usuário se desconectar. Você deve configurar o IdP SAML 2.0 para enviar respostas de logout ao endpoint `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout` que é criado quando você configura o login gerenciado. O endpoint `saml2/logout` usa uma associação POST.
**nota**  
Se você selecionar essa opção e seu IdP SAML esperar uma solicitação de logout assinada, você também precisará configurar o IdP SAML com um certificado de assinatura do seu grupo de usuários.  
O IdP SAML processará a solicitação de logout assinada e desconectará seu usuário da sessão do Amazon Cognito.

1. Escolha sua configuração de **login SAML iniciada pelo IdP**. Como prática recomendada de segurança, escolha **Aceitar somente declarações SAML iniciadas pelo SP**. Se você preparou seu ambiente para aceitar com segurança sessões de login SAML não solicitadas, escolha **Aceitar declarações de SAML iniciadas pelo SP e iniciadas pelo IdP**. Para obter mais informações, consulte [Iniciação de sessão SAML em grupos de usuários do Amazon Cognito](cognito-user-pools-SAML-session-initiation.md).

1. Escolha uma **Metadata document source** (Fonte de documento de metadados). Se seu IdP oferecer metadados SAML em um URL público, você poderá escolher **Metadata document URL** (URL do documento de metadados) e inserir esse URL público. Do contrário, escolha **Upload metadata document** (Carregar documento de metadados) e, em seguida, um arquivo de metadados que você tenha baixado de seu provedor anteriormente.
**nota**  
Se seu provedor tiver um endpoint público, recomendamos que você insira um URL do documento de metadados em vez de carregar um arquivo. O Amazon Cognito atualiza os metadados automaticamente a partir do URL de metadados. Normalmente, a atualização de metadados ocorre a cada seis horas ou antes de os metadados expirarem, o que ocorrer primeiro.

1. Escolha **Mapear atributos entre seu provedor SAML e sua aplicação** para mapear atributos do provedor SAML para o perfil de usuário em seu grupo de usuários. Inclua os atributos obrigatórios do grupo de usuários no mapa de atributos. 

   Por exemplo, quando escolher o **User pool attribute** (Atributo do grupo de usuários) `email`, insira o nome do atributo SAML como ele aparece na declaração SAML de seu IdP. Se o IdP oferecer exemplos de declarações SAML, é possível usá-los para ajudar você a encontrar o nome. Alguns IdPs usam nomes simples, como`email`, enquanto outros usam nomes como os seguintes.

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

1. Escolha **Criar**.

------
#### [ API/CLI ]

Use os comandos a seguir para criar e gerenciar um provedor de identidade (IdP) SAML.

**Para criar um IdP e carregar um documento de metadados**
+ AWS CLI: `aws cognito-idp create-identity-provider`

  Exemplo com arquivo de metadados: `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Onde `details.json` contém:

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**nota**  
Se *<SAML metadata XML>* contiver alguma instância do personagem`"`, você deve adicionar `\` como caractere de escape:`\"`.

  Exemplo com URL de metadados: `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Para fazer upload de um novo documento de metadados para um IdP**
+ AWS CLI: `aws cognito-idp update-identity-provider`

  Exemplo com arquivo de metadados: `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Onde `details.json` contém:

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**nota**  
Se *<SAML metadata XML>* contiver alguma instância do personagem`"`, você deve adicionar `\` como caractere de escape:`\"`.

  Exemplo com URL de metadados: `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**Para obter informações sobre um IdP específico**
+ AWS CLI: `aws cognito-idp describe-identity-provider`

  `aws cognito-idp describe-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)

**Para listar informações sobre todos IdPs**
+ AWS CLI: `aws cognito-idp list-identity-providers`

  Exemplo: `aws cognito-idp list-identity-providers --user-pool-id us-east-1_EXAMPLE --max-results 3`
+ AWS API: [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html)

**Para excluir um IdP**
+ AWS CLI: `aws cognito-idp delete-identity-provider`

  `aws cognito-idp delete-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html)

------

**Para configurar o IdP SAML para adicionar um grupo de usuários como uma parte dependente**
+ O URN do provedor de serviço dos grupos de usuários é `urn:amazon:cognito:sp:us-east-1_EXAMPLE`. O Amazon Cognito exige um valor de restrição de público que corresponda a esse URN na resposta do SAML. Configure seu IdP para usar o seguinte endpoint de vinculação POST para a IdP-to-SP mensagem de resposta.

  ```
  https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse
  ```
+ O IdP SAML deve preencher o `NameID` e quaisquer atributos necessários para o grupo de usuários na declaração do SAML. `NameID` é usado para identificar exclusivamente o usuário federado do SAML no grupo de usuários. O IdP deve transmitir o ID de nome do SAML de cada usuário em um formato consistente com distinção entre maiúsculas e minúsculas. Qualquer variação no valor do ID do nome de um usuário cria um novo perfil de usuário.

**Como fornecer um certificado de assinatura ao IdP SAML 2.0**
+ Para baixar uma cópia da chave pública do Amazon Cognito que o IdP pode usar para validar solicitações de logout SAML, clique no menu **Provedores sociais e externos** do grupo de usuários, selecione seu IdP e, em **Ver certificado de assinatura**, selecione **Baixar como .crt**.

É possível excluir qualquer provedor SAML configurado em seu grupo de usuários com o console do Amazon Cognito.

**Como excluir um provedor SAML**

1. Faça login no [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. No painel de navegação, escolha **User Pools** (Grupos de usuários) e escolha o grupo de usuários que deseja editar.

1. Clique no menu **Provedores sociais e externos**.

1. Selecione o botão de rádio ao lado do SAML IdPs que você deseja excluir.

1. Quando receber a solicitação de **Delete identity provider** (Excluir provedor de identidade), insira o nome do provedor SAML para confirmar a exclusão e escolha **Delete** (Excluir).

# Iniciação de sessão SAML em grupos de usuários do Amazon Cognito
<a name="cognito-user-pools-SAML-session-initiation"></a>

O Amazon Cognito é compatível com autenticação única (SSO) iniciada pelo provedor de serviços (iniciada pelo SP) e pelo IdP. Como prática recomendada de segurança, implemente o SSO iniciado pelo SP em seu grupo de usuários. A Seção 5.1.2 de [Visão geral técnica do SAML V2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.1.2.SP-Initiated%20SSO:%20%20Redirect/POST%20Bindings|outline) descreve a SSO iniciada pelo SP. O Amazon Cognito é o provedor de identidade (IdP) de sua aplicação. A aplicação é o provedor de serviços (SP) que recupera tokens para usuários autenticados. No entanto, quando você usa um IdP de terceiro para autenticar usuários, o Amazon Cognito é o SP. Quando os usuários do SAML 2.0 fazem a autenticação com um fluxo iniciado por SP, sempre devem fazer uma solicitação ao Amazon Cognito e redirecionar para o IdP para autenticação.

Para alguns casos de uso empresariais, o acesso a aplicações internas começa em um marcador em um painel hospedado pelo IdP empresarial. Quando um usuário seleciona um marcador, o IdP gera uma resposta SAML e a envia ao SP para autenticar o usuário na aplicação.

Você pode configurar um IdP SAML em seu grupo de usuários para oferecer suporte ao SSO iniciado pelo IdP. Com a autenticação iniciada por IdP, o Amazon Cognito não consegue verificar se ele solicitou a resposta SAML recebida, pois ele não inicia a autenticação com uma solicitação SAML. Com SSO iniciado pelo SP, o Amazon Cognito define parâmetros de estado que validam uma resposta SAML em relação à solicitação original. Com o login iniciado pelo SP, você também pode se proteger contra falsificação de solicitação entre sites (CSRF).

**Topics**
+ [Implementar o login SAML iniciado pelo SP](#cognito-user-pools-saml-idp-authentication)
+ [Implementar o login SAML iniciado pelo IdP](#cognito-user-pools-SAML-session-initiation-idp-initiation)

## Implementar o login SAML iniciado pelo SP
<a name="cognito-user-pools-saml-idp-authentication"></a>

Como prática recomendada, implemente o login service-provider-initiated (iniciado pelo SP) em seu grupo de usuários. O Amazon Cognito inicia a sessão do usuário e a redireciona para o seu IdP. Com esse método, você tem mais controle sobre quem apresenta as solicitações de login. Você também pode permitir o login iniciado pelo IdP em alguns casos.

O processo a seguir mostra como os usuários fazem o login iniciado pelo SP em seu grupo de usuários por meio de um provedor SAML.

![\[Diagrama de fluxo de autenticação do login SAML iniciado pelo SP do Amazon Cognito.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/scenario-authentication-saml-stepbystep.png)


1. Seu usuário insere o endereço de e-mail em uma página de login. Para determinar o redirecionamento do usuário para o IdP, você pode coletar o endereço de e-mail em uma aplicação personalizada ou invocar o login gerenciado na visualização da web.

   Você pode configurar suas páginas de login gerenciadas para exibir uma lista IdPs ou solicitar um endereço de e-mail e combiná-lo com o identificador do seu IdP SAML. Para solicitar um endereço de e-mail, edite o estilo de identidade visual do login gerenciado e, em **Fundação**, localize **Comportamento de autenticação** e, em **Exibição do provedor**, defina **Estilo de exibição** como **Entrada de pesquisa de domínio**.

1. Sua aplicação invoca o endpoint de redirecionamento do grupo de usuários e solicita uma sessão com o ID do cliente que corresponde à aplicação e o ID do IdP que corresponde ao usuário.

1. O Amazon Cognito redireciona seu usuário para o IdP com uma solicitação SAML, [opcionalmente assinada](cognito-user-pools-SAML-signing-encryption.md#cognito-user-pools-SAML-signing.title), em um elemento `AuthnRequest`.

1. O IdP autentica o usuário de forma interativa ou com uma sessão memorizada por um cookie do navegador.

1. O IdP redireciona seu usuário para o endpoint de resposta SAML do grupo de usuários com a declaração SAML [opcionalmente criptografada](cognito-user-pools-SAML-signing-encryption.md#cognito-user-pools-SAML-signing-encryption.title) em sua carga útil POST.
**nota**  
O Amazon Cognito cancela sessões que não recebem uma resposta em 5 minutos e redireciona o usuário para o login gerenciado. Quando seu usuário encontra esse resultado, ele recebe a mensagem de erro `Something went wrong`.

1. Após verificar a declaração do SAML e [mapear atributos do usuário](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping.title) das declarações na resposta, o Amazon Cognito cria ou atualiza internamente o perfil do usuário no grupo de usuários. Normalmente, seu grupo de usuários retorna um código de autorização para a sessão do navegador do usuário.

1. Seu usuário apresenta o código de autorização ao seu aplicativo, que troca o código por tokens web JSON (JWTs).

1. A aplicação aceita e processa o token de ID do usuário como autenticação, gera solicitações autorizadas aos recursos com o token de acesso e armazena o token de atualização.

Quando um usuário se autentica e recebe uma concessão de código de autorização, o grupo de usuários retorna tokens de ID, acesso e atualização. O token de ID é um objeto de autenticação para gerenciamento de identidade baseado em OIDC. O token de acesso é um objeto de autorização com escopos [OAuth 2.0](https://oauth.net/2/). O token de atualização é um objeto que gera novos tokens de ID e acesso quando os tokens atuais do usuário expiram. Você pode configurar a duração dos tokens dos usuários em seu cliente de aplicação do grupo de usuários.

Você também pode escolher a duração dos tokens de atualização. Depois que o token de atualização do usuário expirar, ele deverá fazer login novamente. Se eles fizerem a autenticação por meio de um IdP SAML, a duração da sessão de seus usuários será definida pela expiração dos tokens, não pela expiração da sessão com o IdP. A aplicação precisa armazenar o token de atualização de cada usuário e renovar a sessão quando ela expirar. O login gerenciado mantém as sessões do usuário em um cookie do navegador válido por 1 hora.

## Implementar o login SAML iniciado pelo IdP
<a name="cognito-user-pools-SAML-session-initiation-idp-initiation"></a>

Ao configurar seu provedor de identidades para fazer login no SAML 2.0 iniciado pelo IdP, você pode apresentar declarações de SAML ao endpoint `saml2/idpresponse` em seu domínio de grupo de usuários sem a necessidade de iniciar a sessão no [Autorizar endpoint](authorization-endpoint.md). Um grupo de usuários com essa configuração aceita declarações SAML iniciadas pelo IdP de um provedor de identidades externo do grupo de usuários compatível com o cliente de aplicação solicitado.

![\[Diagrama de fluxo de autenticação do login SAML iniciado pelo IdP do Amazon Cognito.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/scenario-authentication-saml-idpinit.png)


1. Um usuário solicita o login SAML em sua aplicação.

1. A aplicação invoca um navegador ou redireciona o usuário para a página de login do provedor SAML.

1. O IdP autentica o usuário de forma interativa ou com uma sessão memorizada por um cookie do navegador.

1. O IdP redireciona o usuário para sua aplicação com a declaração SAML, ou resposta, no corpo POST.

1. A aplicação adiciona a declaração SAML ao corpo POST de uma solicitação para o endpoint `saml2/idpresponse` do grupo de usuários.

1. O Amazon Cognito emite um código de autorização para o usuário.

1. Seu usuário apresenta o código de autorização ao seu aplicativo, que troca o código por tokens web JSON (JWTs).

1. A aplicação aceita e processa o token de ID do usuário como autenticação, gera solicitações autorizadas aos recursos com o token de acesso e armazena o token de atualização.

As etapas a seguir descrevem o processo geral de configuração e login com um provedor SAML 2.0 iniciado pelo IdP.

1. Crie ou atribua um grupo de usuários e um cliente de aplicação.

1. Crie um IdP SAML 2.0 em seu grupo de usuários.

1. Configure seu IdP para aceitar a iniciação do IdP. O SAML iniciado pelo IdP apresenta considerações de segurança às quais outros provedores de SSO não estão sujeitos. Por esse motivo, você não pode adicionar algo que não seja SAML IdPs, incluindo o próprio grupo de usuários, a nenhum cliente de aplicativo que use um provedor de SAML com login iniciado pelo IdP.

1. Associe seu provedor SAML iniciado pelo IdP a um cliente de aplicação em seu grupo de usuários.

1. Direcione seu usuário para a página de login do seu IdP SAML e recupere uma declaração de SAML.

1. Direcione o usuário ao endpoint `saml2/idpresponse` do grupo de usuários com sua declaração SAML.

1. Receba tokens web JSON (JWTs).

Para aceitar declarações de SAML não solicitadas em seu grupo de usuários, pense no impacto sobre a segurança da sua aplicação. É provável que ocorram tentativas de falsificação de solicitações e CSRF quando você aceita solicitações iniciadas pelo IdP. Embora seu grupo de usuários não possa verificar uma sessão de login iniciada pelo IdP, o Amazon Cognito valida seus parâmetros de solicitação e declarações de SAML.

Além disso, sua declaração de SAML não deve conter uma reivindicação `InResponseTo` e deve ter sido emitida nos últimos 6 minutos.

Você deve enviar solicitações com SAML iniciado pelo IdP para o `/saml2/idpresponse`. Para solicitações de autorização de login gerenciado e iniciadas pelo SP, forneça parâmetros que identifiquem o cliente da aplicação solicitado, os escopos, o URI de redirecionamento e outros detalhes, como parâmetros da string de consulta nas solicitações `HTTP GET`. Entretanto, para declarações de SAML iniciadas pelo IdP, os detalhes da solicitação devem ser formatados como um parâmetro `RelayState` no corpo de uma solicitação `HTTP POST`. O corpo da solicitação também deve conter sua declaração de SAML como um parâmetro `SAMLResponse`.

Veja a seguir um exemplo de solicitação e resposta para um provedor SAML iniciado pelo IdP.

```
POST /saml2/idpresponse HTTP/1.1
User-Agent: USER_AGENT
Accept: */*
Host: example.auth.us-east-1.amazoncognito.com
Content-Type: application/x-www-form-urlencoded

SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone

HTTP/1.1 302 Found
Date: Wed, 06 Dec 2023 00:15:29 GMT
Content-Length: 0
x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb
Location: https://www.example.com?code=[Authorization code]
```

------
#### [ Console de gerenciamento da AWS ]

**Para configurar um IdP para SAML iniciado pelo IdP**

1. Crie um [grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), um [cliente de aplicação](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) e um provedor de identidades SAML.

1. Desassocie todos os provedores de identidade social e OIDC do seu cliente de aplicação, se houver algum associado.

1. Navegue até o menu **Provedores sociais e externos** do grupo de usuários.

1. Edite ou adicione um provedor SAML.

1. Em **Login de SAML iniciado por IdP**, escolha **Aceitar declarações de SAML iniciadas pelo SP e iniciadas pelo IdP**.

1. Escolha **Salvar alterações**.

------
#### [ API/CLI ]

**Para configurar um IdP para SAML iniciado pelo IdP**

Configure o SAML iniciado pelo IdP com o `IDPInit` parâmetro em uma solicitação de API [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)ou [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API. Veja a seguir um exemplo de `ProviderDetails` de um IdP que oferece suporte ao SAML iniciado pelo IdP.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# Como desconectar usuários do SAML com logout único
<a name="cognito-user-pools-saml-idp-sign-out"></a>

O Amazon Cognito oferece suporte ao [logout único](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.3.Single%20Logout%20Profile|outline) (SLO) do SAML 2.0. Com o SLO, seu aplicativo pode desconectar usuários de seus provedores de identidade SAML (IdPs) quando eles se desconectam do seu grupo de usuários. Dessa forma, quando os usuários quiserem entrar na aplicação novamente, precisam fazer a autenticação com o IdP SAML. Caso contrário, eles podem ter cookies do navegador do IdP ou do grupo de usuários que os transmitem à aplicação sem a necessidade de inserir credenciais.

Quando você configura seu IdP SAML para aceitar o **Fluxo de logout**, o Amazon Cognito redireciona seu usuário com uma solicitação de logout de SAML assinada para seu IdP. O Amazon Cognito determina o local de redirecionamento a partir do URL `SingleLogoutService` nos metadados do seu IdP. O Amazon Cognito assina a solicitação de desconexão com seu certificado de assinatura do grupo de usuários.

![\[Diagrama de fluxo de autenticação de logout do SAML do Amazon Cognito. O usuário solicita o logout e o Amazon Cognito o redireciona para seu provedor com uma solicitação de desconexão do SAML.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/scenario-authentication-saml-sign-out.png)


Quando você direciona um usuário com uma sessão de SAML para o endpoint `/logout` do grupo de usuários, o Amazon Cognito redireciona seu usuário do SAML com a seguinte solicitação para o endpoint de SLO especificado nos metadados do IdP.

```
https://[SingleLogoutService endpoint]?
SAMLRequest=[encoded SAML request]&
RelayState=[RelayState]&
SigAlg=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256&
Signature=[User pool RSA signature]
```

Em seguida, seu usuário retorna ao seu endpoint `saml2/logout` com um `LogoutResponse` de seu IdP. Seu IdP deve enviar a `LogoutResponse` em uma solicitação `HTTP POST`. Em seguida, o Amazon Cognito faz o redirecionamento para o destino de redirecionamento a partir da solicitação inicial de desconexão.

Seu provedor de SAML pode enviar um `LogoutResponse` com mais de um `AuthnStatement`. O `sessionIndex` no primeiro `AuthnStatement` em uma resposta desse tipo deve corresponder ao `sessionIndex` na resposta SAML que autenticou originalmente o usuário. Se `sessionIndex` estiver em qualquer outro `AuthnStatement`, o Amazon Cognito não reconhecerá a sessão e seu usuário não será desconectado.

------
#### [ Console de gerenciamento da AWS ]

**Para configurar a desconexão do SAML**

1. Crie um [grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), um [cliente de aplicação](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) e um IdP SAML.

1. Ao criar ou editar seu provedor de identidades SAML, em **Informações do provedor de identidades**, marque a caixa com o título **Adicionar fluxo de saída**.

1. No menu **Provedores sociais e externos** do grupo de usuários, selecione seu IdP e localize o **Certificado de assinatura**.

1. Escolha **Baixar como .crt**.

1. Configure seu provedor SAML para oferecer suporte ao logout único e à assinatura de solicitações do SAML, além de carregar o certificado de assinatura do grupo de usuários. Seu IdP deve redirecionar para `/saml2/logout` no domínio do grupo de usuários.

------
#### [ API/CLI ]

**Para configurar a desconexão do SAML**

Configure o logout único com o `IDPSignout` parâmetro de uma solicitação de [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)ou. Veja a seguir um exemplo de `ProviderDetails` de um IdP compatível com o logout único do SAML.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",,
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# Assinatura e criptografia SAML
<a name="cognito-user-pools-SAML-signing-encryption"></a>

O login do SAML 2.0 acontece com base no usuário de uma aplicação como portador de solicitações e respostas em seu fluxo de autenticação. Talvez você queira que os usuários não leiam nem modifiquem esses documentos SAML em trânsito. Para fazer isso, adicione assinatura e criptografia SAML aos provedores de identidade SAML (IdPs) em seu grupo de usuários. Com a assinatura SAML, seus grupos de usuários adicionam uma assinatura às solicitações de login e saída do SAML. Com a chave pública do grupo de usuários, seu IdP pode verificar se está recebendo solicitações SAML não modificadas. Então, quando seu IdP responde e transmite as declarações de SAML para as sessões do navegador dos usuários, o IdP pode criptografar essa resposta para que o usuário não inspecione seus próprios atributos e direitos.

Com a assinatura e criptografia do SAML, todas as operações criptográficas durante as operações do SAML do grupo de usuários devem gerar assinaturas e texto cifrado com as chaves geradas pelo Amazon Cognito. user-pool-provided Atualmente, você não pode configurar um grupo de usuários para assinar solicitações ou aceitar declarações criptografadas usando uma chave externa.

**nota**  
Seus certificados de grupo de usuários são válidos por 10 anos. Uma vez por ano, o Amazon Cognito gera novos certificados de assinatura e criptografia para seu grupo de usuários. O Amazon Cognito retorna o certificado mais recente quando você solicita o certificado de assinatura e assina as solicitações com o certificado de assinatura mais recente. Seu IdP pode criptografar declarações SAML com qualquer certificado de criptografia de grupo de usuários que não tenha expirado. Seus certificados anteriores continuam válidos até o fim do prazo, e a chave pública não muda entre os certificados. Como prática recomendada, atualize anualmente o certificado na configuração do seu provedor.

**Topics**
+ [Aceitar respostas SAML criptografadas do seu IdP](#cognito-user-pools-SAML-encryption)
+ [Assinatura de solicitações SAML](#cognito-user-pools-SAML-signing)

## Aceitar respostas SAML criptografadas do seu IdP
<a name="cognito-user-pools-SAML-encryption"></a>

O Amazon Cognito e seu IdP podem estabelecer confidencialidade nas respostas do SAML quando os usuários fazem login e logout. O Amazon Cognito atribui um par de chaves RSA público-privado e um certificado a cada provedor externo de SAML que você configura no seu grupo de usuários. Ao ativar a criptografia de resposta para seu provedor de SAML do grupo de usuários, carregue o certificado em um IdP que aceite respostas SAML criptografadas. A conexão do grupo de usuários com o IdP SAML só funciona quando o IdP começa a criptografar todas as declarações do SAML com a chave fornecida.

Veja a seguir uma visão geral do fluxo de login com SAML criptografado.

1. Seu usuário inicia o login e escolhe o IdP SAML.

1. Seu grupo de usuários [Autorizar endpoint](authorization-endpoint.md) redireciona o usuário para o IdP SAML com uma solicitação de login do SAML. Seu grupo de usuários pode, como opção, colocar nessa solicitação uma assinatura que permita a verificação da integridade pelo IdP. Quando quiser assinar solicitações SAML, você deve configurar seu IdP para aceitar solicitações que seu grupo de usuários tenha assinado com a chave pública no certificado de assinatura.

1. O IdP SAML faz login com seu usuário e gera uma resposta SAML. O IdP criptografa a resposta com a chave pública e redireciona o usuário para o endpoint `/saml2/idpresponse` do grupo de usuários. O IdP deve criptografar a resposta conforme definido pela especificação SAML 2.0. Para obter mais informações, consulte `Element <EncryptedAssertion>` em [Declarações e protocolos para o OASIS Security Assertion Markup Language (SAML) V2.0](https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf).

1. Seu grupo de usuários decifra o texto cifrado na resposta SAML com a chave privada e faz login com seu usuário.

**Importante**  
Quando você ativa a criptografia de resposta para um IdP SAML em seu grupo de usuários, o IdP deve criptografar todas as respostas com uma chave pública específica do provedor. O Amazon Cognito não aceita respostas SAML não criptografadas de um IdP externo SAML que você configura para aceitar a criptografia. 

Qualquer IdP SAML externo no grupo de usuários pode aceitar criptografia de resposta, e cada IdP recebe seu próprio par de chaves.

------
#### [ Console de gerenciamento da AWS ]

**Para configurar a criptografia de resposta SAML**

1. Crie um [grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), um [cliente de aplicação](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) e um IdP SAML.

1. Ao criar ou editar seu provedor de identidades SAML, em **Assinar solicitações e criptografar respostas**, marque a caixa com o título **Exigir declarações de SAML criptografadas desse provedor**.

1. No menu **Provedores sociais e externos** do grupo de usuários, selecione o IdP SAML e clique em **Exibir certificado de criptografia**.

1. Escolha **Baixar como .crt** e envie o arquivo baixado ao seu IdP SAML. Configure o IdP SAML para criptografar as respostas do SAML com a chave no certificado.

------
#### [ API/CLI ]

**Para configurar a criptografia de resposta SAML**

Configure a criptografia de resposta com o `EncryptedResponses` parâmetro de uma solicitação [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)ou de [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API. Veja a seguir um exemplo de `ProviderDetails` de um IdP compatível com a assinatura da solicitação.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

Para obter o certificado de criptografia do seu grupo de usuários, faça uma solicitação de [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)API e recupere o valor de `ActiveEncryptionCertificate` no parâmetro `ProviderDetails` de resposta. Salve esse certificado e envie-o ao seu IdP como certificado de criptografia para solicitações de login do seu grupo de usuários.

------

## Assinatura de solicitações SAML
<a name="cognito-user-pools-SAML-signing"></a>

A possibilidade de provar a integridade das solicitações do SAML 2.0 ao seu IdP é uma vantagem de segurança do login do SAML iniciado pelo SP do Amazon Cognito. Cada grupo de usuários com um domínio recebe um certificado de assinatura X.509. Com a chave pública nesse certificado, os grupos de usuários aplicam uma assinatura criptográfica às *solicitações de saída* que seu grupo de usuários gera quando os usuários selecionam um IdP SAML. Como opção, você pode configurar seu cliente de aplicação para assinar *solicitações de login* SAML. Quando você assina a solicitações SAML, seu IdP pode verificar se a assinatura nos metadados XML de suas solicitações corresponde à chave pública no certificado do grupo de usuários que você fornece.

------
#### [ Console de gerenciamento da AWS ]

**Para configurar a assinatura da solicitação SAML**

1. Crie um [grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), um [cliente de aplicação](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) e um IdP SAML.

1. Ao criar ou editar seu provedor de identidades SAML, em **Assinar solicitações e criptografar respostas**, marque a caixa com o título **Assinar solicitações SAML neste provedor**.

1. No menu **Provedores sociais e externos** do grupo de usuários, selecione **Ver certificado de assinatura**.

1. Escolha **Baixar como .crt** e envie o arquivo baixado ao seu IdP SAML. Configure seu IdP SAML para verificar a assinatura das solicitações SAML recebidas.

------
#### [ API/CLI ]

**Para configurar a assinatura da solicitação SAML**

Configure a assinatura da solicitação com o `RequestSigningAlgorithm` parâmetro de uma solicitação [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)ou de [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API. Veja a seguir um exemplo de `ProviderDetails` de um IdP compatível com a assinatura da solicitação.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# Nomes e identificadores do provedor de identidades SAML
<a name="cognito-user-pools-managing-saml-idp-naming"></a>

Ao nomear seus provedores de identidade SAML (IdPs) e atribuir identificadores de IdP, você pode automatizar o fluxo de solicitações de entrada e saída iniciadas pelo SP para esse provedor. Para obter informações sobre restrições de string ao nome do provedor, consulte a `ProviderName` propriedade de. [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html#CognitoUserPools-CreateIdentityProvider-request-ProviderName)

![\[Diagrama de fluxo de autenticação do login SAML iniciado pelo SP do Amazon Cognito com um identificador de IdP e login gerenciado. O usuário fornece um endereço de e-mail para login gerenciado e o Amazon Cognito o redireciona automaticamente para seu provedor.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/scenario-authentication-saml-identifier.png)


Você também pode escolher até 50 identificadores para os provedores SAML. Identificador é um nome amigável para um IdP em seu grupo de usuários e deve ser exclusivo dentro do grupo. Se os identificadores SAML corresponderem aos domínios de e-mail dos usuários, o login gerenciado solicitará o endereço de e-mail de cada usuário, avaliará o domínio em seu endereço de e-mail e os redirecionará para o IdP que corresponde ao domínio. Como a mesma organização pode ter vários domínios, um único IdP pode ter vários identificadores.

Independentemente de você usar identificadores de domínio de e-mail, é possível usar identificadores em uma aplicação multilocatário para redirecionar os usuários para o IdP correto. Quando quiser ignorar totalmente o login gerenciado, você pode personalizar os links que apresenta aos usuários para que eles sejam redirecionados por [Autorizar endpoint](authorization-endpoint.md) diretamente para o IdP. Para cadastrar usuários com um identificador e redirecionar para o IdP, inclua o identificador no formato `idp_identifier=myidp.example.com` nos parâmetros de solicitação da solicitação de autorização inicial.

Outro método para passar um usuário para o seu IdP é preencher o parâmetro `identity_provider` com o nome do IdP no seguinte formato de URL.

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
identity_provider=MySAMLIdP&
client_id=1example23456789&
redirect_uri=https://www.example.com
```

Depois que o usuário faz login com seu IdP SAML, ele o redireciona com uma resposta SAML no corpo `HTTP POST` para o endpoint `/saml2/idpresponse`. O Amazon Cognito processa a declaração do SAML e, se as declarações na resposta atenderem às expectativas, redireciona para a URL de retorno de chamada do cliente de aplicação. Depois que seu usuário tiver concluído a autenticação dessa forma, ele poderá interagir com páginas da Web somente para seu IdP e aplicação.

Com identificadores de IdP em formato de domínio, o login gerenciado solicita endereços de e-mail no login e, quando o domínio de e-mail corresponde a um identificador de IdP, redireciona os usuários para a página de login do IdP. Por exemplo, você cria uma aplicação que exige o login de funcionários de duas empresas diferentes. A primeira empresa, AnyCompany A, possui `exampleA.com` `exampleA.co.uk` e. A segunda empresa, AnyCompany B, possui`exampleB.com`. Neste exemplo, você configurou dois IdPs, um para cada empresa, da seguinte forma: 
+ Para o IdP A, você define os identificadores `exampleA.com` e `exampleA.co.uk`.
+ Para o IdP B, você define o identificador `exampleB.com`.

Na aplicação, invoque o login gerenciado para seu cliente da aplicação para solicitar que cada usuário insira seu endereço de e-mail. O Amazon Cognito traz o domínio do endereço de e-mail, correlaciona o domínio a um IdP com um identificador de domínio e redireciona seu usuário para o IdP correto com uma solicitação para [Autorizar endpoint](authorization-endpoint.md) que contém um parâmetro de solicitação `idp_identifier`. Por exemplo, se um usuário inserir `bob@exampleA.co.uk`, a próxima página com a qual ele vai interagir é a página de login do IdP em `https://auth.exampleA.co.uk/sso/saml`.

Também é possível implementar a mesma lógica de forma independente. Na aplicação, você pode criar um formulário personalizado que coleta as entradas do usuário e as correlaciona com o IdP correto de acordo com sua própria lógica. Você pode gerar portais personalizados para cada um dos locatários da aplicação, em que cada um é vinculado ao endpoint de autorização com o identificador do locatário nos parâmetros da solicitação.

Para coletar um endereço de e-mail e analisar o domínio no login gerenciado, atribua pelo menos um identificador a cada IdP SAML que você atribuiu ao cliente da aplicação. Por padrão, a tela de login gerenciado exibe um botão para cada um dos IdPs que você atribuiu ao seu cliente de aplicativo. Mas se tiver atribuído os identificadores com êxito, a página de login da IU hospedada clássica será semelhante à imagem a seguir.

![\[Uma página de login do login gerenciado no Amazon Cognito exibindo um login de usuário local e uma solicitação para que um usuário federado insira um endereço de e-mail.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/cup-saml-identifiers.png)


**nota**  
Na interface de usuário hospedada clássica, a página de login do seu cliente de aplicativo solicita automaticamente um endereço de e-mail quando você atribui identificadores ao seu. IdPs Na experiência de login gerenciado, você deve habilitar esse comportamento no editor de identidade visual. Na categoria de configurações **Comportamento de autenticação**, selecione **Entrada de pesquisa de domínio** sob o cabeçalho **Exibição do provedor**.

A análise de domínio no login gerenciado exige que você use domínios como identificadores de IdP. Se você atribuir um identificador de qualquer tipo a cada SAML IdPs de um cliente de aplicativo, o login gerenciado desse aplicativo não exibirá mais os botões de seleção de IDP. Adicione identificadores de IdP para SAML quando você quiser usar análise de e-mail ou lógica personalizada para gerar redirecionamentos. Quando você quiser gerar redirecionamentos silenciosos e também quiser que suas páginas de login gerenciadas exibam uma lista de IdPs, não atribua identificadores e use o parâmetro de `identity_provider` solicitação em suas solicitações de autorização.
+ Se você atribuir somente um IdP SAML ao cliente da aplicação, a página de login do login gerenciado exibirá um botão para fazer login com esse IdP.
+ Se você atribuir um identificador a cada IdP SAML ativado para o cliente da aplicação, na página de login do login gerenciado, será exibido um prompt de entrada para inserção de um endereço de e-mail.
+ Se você tiver vários IdPs e não atribuir um identificador a todos eles, a página de login gerenciado exibirá um botão para entrar com cada IdP atribuído.
+ Se você atribuiu identificadores à sua IdPs e deseja que suas páginas de login gerenciadas exibam uma seleção de botões de IdP, adicione um novo IdP que não tenha identificador no seu cliente de aplicativo ou crie um novo cliente de aplicativo. Também é possível excluir um IdP existente e adicioná-lo novamente sem um identificador. Se você criar um IdP, seus usuários do SAML criarão novos perfis de usuário. Essa duplicação de usuários ativos pode afetar a cobrança no mês em que você altera a configuração do IdP.

Para obter mais informações sobre a configuração do IdP, consulte [Como configurar provedores de identidade para seu grupo de usuários](cognito-user-pools-identity-provider.md).