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 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
<
<
<
<
<
<
Cabeçalho sempre editar Set-Cookie (.*) "$1; HTTPOnly; Seguro">
>
>
>
>
Asserção Inválida:
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:
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
- Arquivo HAR
[
1]
para extrair Solicitação/Resposta SAML