Solução de problemas relacionados ao SAML no AEM

O artigo explica como solucionar problemas de SAML (Security Assertion Markup Language) com AEM. Aborda o problema de loop infinito, problema de asserção inválida, entre outros, e medidas para resolvê-los.

Descrição description

Ambiente

Experience Manager

Problema/Sintomas

Como podemos solucionar problemas relacionados à SAML (Security Assertion Markup Language) com o Adobe Experience Manager (AEM)?

Resolução resolution

Problema de loop infinito:

  • Verifique se ds:signature faz parte da asserção SAML > Caso contrário, isso deve ser feito no final do IDP e marque a caixa de seleção para Assertion assinado
  • Verifique o formato nameId na resposta SAML. O formato deve corresponder exatamente ao formato de Política nameId, conforme configurado na Configuração SAML
  • Verificar AudienceRestriction SAML na resposta SAML. O valor dessa tag deve corresponder exatamente à ID da entidade na configuração SAML
  • Verifique saml2: conditions (NotBefore & NotOnOrAfter), Server is not in sync with ntp server. Use ntpd e force-o a sincronizar a hora do sistema (ntpdate -s pool.ntp.org). Para o teste, altere a tolerância do relógio para -1; isso ignorará a diferença do relógio.
  • Verifique se o idp não tem uma declaração assinada. Pergunte à equipe do idp que a resposta é assinada e a afirmação precisa ser assinada de acordo com a especificação do saml.
  • Verifique se a saída do rastreador SAML se a declaração do IDP estiver criptografada. Em caso afirmativo, a configuração do manipulador de autenticação SAML deve usar a caixa de seleção de criptografia

Verifique se o Certificado SAML está no formato correto:

  • Buscar a assinatura da resposta do SAML e corrigir o certificado, ou seja, após a linha 65, pressione enter e assim por diante.
  • Ele pode ser usado para instalar no AEM truststore e corresponder os detalhes do certificado com o IDP.

Criptografia:

  • Primeiro, sempre conclua a configuração do SAML sem criptografia. Quando isso for feito, habilite a criptografia. Usando esse modo, é fácil depurar o problema

Dispatcher:

  • Verifique se a solicitação de logon SAML é permitida na seção de filtros. Caso contrário, atualize a seção /filter para permitir solicitações POST para */saml_login.

    /0100 { /type "allow" /method "POST" /url "*/saml_login" }

  • Verifique a alteração no cabeçalho Mod (mod_header) no nível do servidor da Web em httpd.conf. Ele deve estar no formato abaixo

    < < < < < < O cabeçalho sempre edita o Set-Cookie (.*) "$1; SomenteHTTP; Seguro" > > > > >

Asserção inválida:

1
2
com.adobe.granite.auth.saml.model.Assertion Invalid Assertion: Signature invalid. com.adobe.granite.auth.saml.SamlAuthenticationHandler Private key of SP not provided: Cannot sign Authn request
  • O problema pode ser com o certificado armazenado no truststore. A solução aqui pode ser excluir e recarregar o novo idp_cert e verificar o caso de uso.
  • Se você não estiver criptografando a resposta do SAML, poderá ignorar o erro "Chave privada do SP não fornecida: não é possível assinar a solicitação de Autenticação".

Não É Possível Recuperar A Chave Privada:

1
2
[ com.adobe.granite.security.user.internal.servlets.KeyStoreManagingServlet,1121, [ javax.servlet.Servlet] ] ServiceEvent REGISTERED saml.log:27.01.2019 14:16:13.642 *ERROR* [ qtp275633701-179] com.adobe.granite.auth.saml.SamlAuthenticationHandler KeyStore uninitialized. Cannot retrieve private key to decrypt assertions.
  • Esse erro significa que o IDP criptografou a asserção e não há chave privada para descriptografar a resposta. Se quiser criptografar a resposta, carregue uma chave privada válida no keystore AEM.

Informações a serem fornecidas ao gerar um tíquete de suporte relacionado a SAML:

  • Solicitação SAML
  • Resposta SAML
  • Configuração SAML
  • Logs DEBUG para SAML (com.adobe.granite.auth.saml)
  • Error.log
  • HAR[ 1] arquivo para extrair solicitação/resposta SAML

[ 1] Gerar um arquivo HAR

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f