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á.
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
. - 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
.-
O Amazon Cognito é compatível com valores de
relayState
maiores do que 80 bytes. Embora as especificações do SAML afirmem que o valor derelayState
“não deve exceder 80 bytes de comprimento”, a prática atual do setor geralmente diverge desse comportamento. Como consequência, rejeitar valores derelayState
maiores que 80 bytes quebrará muitas integrações padrão de provedor de SAML. -
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âmetrorelayState
. 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(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.us-east-1.amazoncognito.com
/saml2/idpresponse With a custom domain: https://auth.example.com
/saml2/idpresponseConsulte Como configurar um domínio de grupo de usuários 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
. - 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áriosemail
. Para ter mais informações sobre mapeamento de atributos, consulte Mapeamento de atributos de IdP para perfis e tokens. - 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 porNameID
. Se houver alterações deNameID
, o Amazon Cognito considerará que a declaração é para um novo usuário. O atributo definido emNameID
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çãoNameID
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 deNameID
deurn: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 deurn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
quando o IdP não especifica um formato da declaraçãoNameID
. Esse comportamento está em conformidade com a seção 2.2.2 Nome do tipo complexo IDType, da especificação SAML2.0. -
Uma reivindicação
AudienceRestriction
com um valor deAudience
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 valorInResponseTo
do ID da solicitação SAML original.<saml2p:Response Destination="https://
mydomain.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 deRecipient
do endpointsaml2/idpresponse
do grupo de usuários e, para SAML iniciado pelo SP, um valor deInResponseTo
que corresponde ao ID da solicitação SAML original.<saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="
Date-time stamp
" Recipient="https://mydomain.us-east-1.amazoncognito.com
/saml2/idpresponse"/>
-
- Solicitações de login iniciadas pelo SP
-
Quando o Autorizar endpoint 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 Social e provedores 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.
-
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.
-
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 😐 or 𠮷 que seu IdP passa 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 como validar certificados, consulte O que é um certificado SSL/TLS?. - 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
aceitaLogoutResponse
como solicitaçõesHTTP POST
. Os grupos de usuários não aceitam respostas de logout com vinculaçãoHTTP GET
.