Como soluciono erros de resposta inválida do SAML que os usuários podem receber quando se federam no Amazon Cognito?

11 minuto de leitura
0

Preciso solucionar erros que os usuários podem encontrar ao se federar no Amazon Cognito com o Security Assertion Markup Language 2.0 (SAML 2.0).

Resolução

O Amazon Cognito oferece suporte à autenticação com provedores de identidade (IdPs) e SAML 2.0. Há erros comuns que os usuários podem encontrar ao se federar no Amazon Cognito usando SAML.

Observação: em todo o processo, substitua <attribute_name> pelo atributo de usuário do seu cenário de erro.

Exibir respostas do SAML

Para resolver erros comuns de federação do SAML, veja a resposta do SAML enviada do IdP para o grupo de usuários do Amazon Cognito. Para obter instruções sobre como capturar e decodificar a resposta SAML, consulte Visualizar uma resposta SAML em seu navegador.

Observação: o elemento SAMLResponse contém a solicitação codificada em base64. Uma carga útil com % caracteres indica que a carga é codificada em URL além de base64. Execute a decodificação de URL no valor SAMLResponse antes de enviá-lo para decodificação em base64.

Resolver erros inválidos de resposta do SAML

“Resposta SAML inválida recebida: Atributos de usuário inválidos: <attribute_name>: O atributo é obrigatório.”

Esse erro ocorre quando um grupo de usuários é configurado com atributos obrigatórios, mas o IdP não está transmitindo declarações para os atributos necessários. Esse erro também ocorre quando o mapeamento de atributos não está disponível para os atributos necessários.

Siga estas etapas para resolver o erro:

1.    Abra o console do Amazon Cognito.

2.    Selecione seu grupo de usuários.

3.    Revise as informações sobre o grupo de usuários. Observe os atributos necessários configurados em Experiência de inscrição.

4.    Recupere e revise a resposta do SAML em seu navegador.

5.    Verifique se o IdP está passando todas as declarações de atributos necessárias no campo AttributeStatement da resposta. Se o IdP não estiver enviando todos os atributos necessários na resposta do SAML, revise a configuração de mapeamento de atributos do seu IdP. Certifique-se de que seu IdP esteja configurado para enviar os mapeamentos corretos para os atributos necessários.

Observação: seu IdP pode oferecer exemplos de afirmações SAML como referência. Você pode verificar as afirmações para obter mais detalhes sobre os atributos mapeados do IdP. Alguns IdPs usam nomes simples para mapeamentos de atributos, como um endereço de e-mail, enquanto outros usam nomes de atributos formatados em URL semelhantes a este exemplo:

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

6.    Quando a resposta do SAML inclui atributos obrigatórios, mas você ainda está recebendo o mesmo erro, verifique os mapeamentos de atributos do Amazon Cognito. Quando falta um mapeamento para um atributo obrigatório, adicione um mapeamento à declaração de atributo. Para obter instruções sobre como adicionar mapeamentos de atributos, consulte Especificação de mapeamentos de atributos do provedor de identidade para seu grupo de usuários.

“Resposta SAML inválida recebida: Atributos de usuário inválidos: <attribute_name>: O atributo obrigatório não pode ser excluído.”

Esse erro ocorre quando um atributo obrigatório é alterado no IdP para que o atributo obrigatório seja nulo ou excluído. Esse erro também ocorre quando um mapeamento é removido após a criação de um usuário.

Siga estas etapas para resolver o erro:

1.    Abra o console do Amazon Cognito.

2.    Selecione seu grupo de usuários do Amazon Cognito.

3.    Revise as informações sobre o grupo de usuários. Observe os atributos necessários configurados.

4.    Recupere e revise a resposta do SAML em seu navegador.

5.    Verifique se o IdP está passando todas as declarações de atributos obrigatórias no campo AttributeStatement da resposta. Se o IdP não estiver enviando todos os atributos necessários na resposta do SAML, revise a configuração de mapeamento de atributos do IdP. Certifique-se de que seu IdP esteja configurado para enviar os atributos necessários com os mapeamentos corretos.

6.    Se todos os atributos necessários forem passados com valores válidos na resposta SAML, verifique os mapeamentos de atributos do IdP. Certifique-se de que haja mapeamentos para todos os atributos necessários.

Observação: você pode encontrar o seguinte erro durante as solicitações de federação depois que o atributo obrigatório de um IdP for excluído ou alterado para nulo: “Resposta SAML inválida recebida: Atributos de usuário inválidos: <attribute_name>: O atributo obrigatório não pode ser excluído.” Esse erro também ocorre quando o mapeamento é removido após a criação de um usuário. Para resolver esse erro, siga as etapas anteriores para garantir que o mapeamento exista para os atributos necessários. Em seguida, um valor correto é passado para os atributos necessários do seu IdP.

“Resposta SAML inválida recebida: Atributos de usuário inválidos: <attribute_name>: O atributo não pode ser atualizado.”

Esse erro ocorre quando um atributo é passado do IdP, mas o atributo mapeado do Amazon Cognito está definido como imutável (“mutável”: “falso”). Você não pode alterar as configurações de mutabilidade de um atributo após a criação de um grupo de usuários. Para resolver esse erro, você precisa remover a regra de mapeamento de atributos que mapeia o atributo SAML para um atributo imutável.

Siga estas etapas para resolver o erro:

1.    Execute o seguinte comando da AWS Command Line Interface (AWS CLI) e observe os atributos retornados na saída. Todos os atributos retornados na saída são imutáveis.

Observação: substitua <userpool_id> pelo ID de grupo de usuários.

aws cognito-idp describe-user-pool --user-pool-id <userpool_id> --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'

Observação: se você receber erros ao executar comandos da AWS CLI, verifique se está usando a versão mais recente da AWS CLI.

2.    Abra o console do Amazon Cognito.

3.    Analise os mapeamentos de atributos SAML para seu provedor.

4.    Verifique se algum dos atributos do SAML está mapeado para os atributos do Amazon Cognito retornados na saída do comando. Se houver um mapeamento para um atributo imutável, exclua esse mapeamento. Se você precisar mapear esse atributo SAML, mapeie-o para qualquer atributo mutável existente. Você também pode criar um atributo mutável personalizado e mapear o atributo SAML para o atributo mutável personalizado.

Não há nenhuma solução alternativa que você possa executar em um grupo de usuários existente para excluir um mapeamento porque um atributo mapeado é necessário. Você deve criar um novo grupo de usuários com as configurações de mutabilidade necessárias e migrar seus usuários para o novo grupo de usuários.

“Resposta SAML inválida recebida: A assinatura de resposta SAML é inválida.”

Esse erro ocorre quando o IdP altera o certificado de assinatura SAML. Para solucionar esse problema, revise a resposta SAML que você recebe ao se federar no Amazon Cognito. Observe o valor fornecido no campo X509Certificate. Compare esse valor do X509Certificate na resposta SAML com o valor do X509Certificate no arquivo XML de metadados carregado no Amazon Cognito para a configuração do IdP. Se os valores forem diferentes, isso significa que o certificado de assinatura SAML usado pelo IdP está atualizado.

Siga estas etapas para resolver o erro:

1.    Navegue até a página de configuração do aplicativo do seu IdP e, em seguida, busque o arquivo de metadados atualizado.

2.    Abra o console do Amazon Cognito.

3.    Navegue até a configuração do seu SAML IdP.

4.    Substitua o arquivo de metadados existente pelo arquivo de metadados atualizado.
-ou-
Se seu IdP oferecer metadados SAML por meio de um URL público, copie o URL do documento de metadados. Cole esse URL público em vez de fazer o upload de um arquivo de metadados.

“Resposta SAML inválida recebida: A restrição de público no SAML Assertion não permite isso para urn:amazon:cognito:sp:xxxxxxxx.”
-ou-
“Resposta SAML inválida recebida: O aplicativo com o identificador 'urn:amazon:cognito:sp:xxxxxxxx' não foi encontrado.”

Observação: a mensagem de erro difere com base no IdP.

Esse erro ocorre quando você configura incorretamente sua ID de entidade no seu IdP. Esse erro também ocorre quando você usa o URN de outro grupo de usuários como ID da entidade.

Siga estas etapas para resolver o erro:

1.    Abra o console do Amazon Cognito.

2.    Escolha Grupos de usuários e anote seu ID de grupo de usuários.

3.    Acesse as configurações do aplicativo SAML do IdP e, em seguida, configure o ID da entidade no seguinte formato:

Observação: substitua <user_pool_id> pelo ID do seu grupo de usuários Amazon Cognito.

urn:amazon:cognito:sp:<user_pool_id>

“Foi encontrado um erro na página solicitada.”

Esse erro ocorre na página de interface hospedada do Amazon Cognito. Quando essa mensagem de erro não é acompanhada por nenhuma outra declaração de erro, ela indica que o URL do Assertion Consumer Service (ACS) do seu aplicativo está configurado incorretamente. Seu IdP usa o URL do ACS para enviar uma resposta SAML ao Amazon Cognito. O URL do ACS segue este formato:

Observação: substitua <your_user_pool_domain> pelo domínio do seu grupo de usuários.

https://<your_user_pool_domain>/saml2/idpresponse

O Amazon Cognito só oferece suporte à vinculação POST para o endpoint. Seu IdP deve enviar respostas SAML na solicitação POST para o endpoint. Se você configurar incorretamente esse URL no aplicativo do seu IdP, seu IdP enviará a resposta do SAML para um endpoint incorreto. Isso resulta em um erro 400 e uma falha na federação.

Siga estas etapas para resolver o erro:

1.    Acesse a configuração do aplicativo do seu IdP e defina o URL do ACS usando um dos seguintes formatos:

Domínio Cognito:

https://<your_user_pool_domain>.auth.<region>.amazoncognito.com/saml2/idpresponse

Domínio personalizado:

https://<your_user_pool_domain>/saml2/idpresponse

“Foi encontrado um erro na página solicitada: relayState inválido do provedor de identidade.”
-ou-
“Foi encontrado um erro na página solicitada: samlResponse ou relayState inválidos do provedor de identidade.”

Esse erro ocorre pelos seguintes motivos:

  • O parâmetro relayState é definido como nulo pelo IdP quando uma resposta SAML é enviada ao Amazon Cognito.
  • O URL do ACS na solicitação SAML não é a mesma que o URL do ACS configurado no aplicativo do seu IdP.

O Amazon Cognito gera um parâmetro RelayState ao encaminhar uma solicitação de autenticação para seu IdP. Esse parâmetro RelayState deve ser retornado pelo IdP ao Amazon Cognito após a autenticação bem-sucedida.

Durante a federação do SAML, um grupo de usuários atua como um provedor de serviços em nome do seu aplicativo. Como provedor de serviços, o Amazon Cognito só oferece suporte a fluxos de login único (SSO) iniciados pelo provedor de serviços. Não há suporte para fluxos iniciados por IdP. Quando uma solicitação de federação é iniciada a partir do seu IdP, o atributo obrigatório do IdP é excluído ou alterado para nulo. Uma falha na federação é o resultado que inclui a mensagem de erro mencionada anteriormente.

Para resolver esse erro, inicie a solicitação de federação do Amazon Cognito em vez do IdP. Para iniciar a federação do Amazon Cognito, siga uma das etapas a seguir para iniciar seu fluxo de autenticação:

  • Redirecione os usuários para o endpoint /login para fazer login. O endpoint /login carrega a página de login e apresenta as opções de autenticação do cliente aos usuários. Conecte-se ao endpoint /login quando os usuários precisarem marcar opções diferentes para entrar em seus aplicativos e serem redirecionados para o IdP.
  • Envie solicitações para o endpoint /oauth2/authorize do Amazon Cognito. O endpoint /oauth2/authorize é um endpoint de redirecionamento que suporta dois destinos de redirecionamento. Quando você inclui um parâmetro identity_provider ou idp_identifier no URL, seu usuário é facilmente redirecionado para a página de login do IdP. Você pode usar essa opção para ignorar o layout padrão da interface hospedada e ser redirecionado diretamente para a página do IdP.

O erro também ocorre quando o URL do ACS é diferente quando uma solicitação de federação para o mesmo aplicativo IdP é de um grupo de usuários diferente. Siga estas etapas para investigar e resolver o erro:

1.    Ao federar no Amazon Cognito, capture o arquivo HTTP Archive (HAR).

2.    No seu navegador, na guia Rede, procure a solicitação com uma entrada saml?SAMLRequest e, em seguida, abra a solicitação.

3.    Copie o SAMLRequest fornecido nos parâmetros da solicitação.

4.    Use sua ferramenta de decodificação SAML preferida para decodificar o SAMLRequest. Em seguida, verifique se o URL do ACS enviado no SAMLRequest é o mesmo definido no aplicativo do seu IdP.

O erro é confirmado quando os valores de SamlRequest são diferentes.

5.    Para resolver o erro, verifique sua configuração de IdP. Certifique-se de que o URL do ACS definido em seu aplicativo seja o mesmo do ACS enviado no SAMLRequest.

O URL do ACS é diferente quando uma solicitação de federação é gerada para o mesmo aplicativo IdP a partir de um grupo de usuários diferente. Certifique-se de iniciar sua solicitação de federação a partir do grupo de usuários apropriado.

AWS OFICIAL
AWS OFICIALAtualizada há um ano