Comment dépanner les problèmes liés à SAML dans AEM

Objectif

Comment pouvons-nous dépanner les problèmes liés à SAML avec AEM ? Quelles informations seraient nécessaires ?

Étapes

Problème de boucle infinie :

  • Vérifiez si ds:signature fait partie de l’assertion SAML >. Si ce n’est pas le cas, cela doit être fait du côté IDP et il faut cocher la case pour l’assertion signée.
  • Vérifiez le format nameId dans la réponse SAML. Le format doit correspondre exactement au format de la stratégie d’ID de nom tel que configuré dans Configuration SAML.
  • Vérifiez la balise SAML AudienceRestriction dans la réponse SAML. La valeur de cette balise doit correspondre exactement à l’ID de l’entité dans la configuration SAML.
  • Vérifiez les conditions saml2:conditions(NotBefore & NotOnOrAfter). Le serveur n’est pas synchronisé avec le serveur NTP. Utilisez ntpd et forcez-le à synchroniser l’heure du système (ntpdate -s pool.ntp.org). Pour tester, paramétrez la tolérance d’horloge sur -1. Cela ignorera la différence d’horloge.
  • Vérifiez que l’IDP n’a pas d’assertion signée. Demandez à l’équipe IDP de s’assurer que la réponse est signée, et l’assertion doit être signée selon les spécifications SAML. 
  • Vérifiez dans la sortie du traceur SAML si l’assertion d’IDP est chiffrée. Si oui, la configuration de SAML auth handler doit utiliser la case à cocher de chiffrement.

Vérifiez si le certificat SAML est dans le bon format :

  • Récupérez la signature de la réponse SAML et corrigez le certificat, c’est-à-dire après la 65e ligne, appuyez sur Entrée et ainsi de suite.
  • Cela peut ensuite être utilisé pour l’installation dans le TrustStore AEM et pour faire correspondre les détails du certificat avec IDP.

Chiffrement :

  • Tout d’abord, effectuez toujours la configuration SAML sans chiffrement. Lorsque cela est fait, activez le chiffrement. De cette façon, il est facile de déboguer le problème.

Répartiteur :

  • Assurez-vous que la demande de connexion SAML est autorisée dans la section des filtres. Sinon, mettez à jour la section /filter pour autoriser les demandes POST vers */saml_login.

    /0100 { /type "allow" /method "POST" /url "*/saml_login" }
  • Vérifiez le changement dans Mod header(mod_header) au niveau du serveur web dans httpd.conf. Il doit être au format ci-dessous
    <<<<<< Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure" >>>>>

Assertion non valide :

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
  • Le problème pourrait être lié au certificat stocké dans le TrustStore. La solution ici pourrait être de supprimer et de retélécharger le nouveau idp_cert et de vérifier le cas d’utilisation.
  • Si vous ne chiffrez pas la réponse SAML, vous pouvez ignorer l’erreur « Clé privée de SP non fournie : impossible de signer la demande d’authentification ».

Impossible de récupérer la clé privée :

[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.
  • Cette erreur signifie qu’IDP a chiffré l’assertion et qu’il n’y a pas de clé privée pour déchiffrer la réponse. Si vous voulez chiffrer la réponse, vous devez télécharger une clé privée valide dans le KeyStore AEM.

Informations à fournir lors de la soumission d’un ticket de support lié à SAML :

  • Demande SAML
  • Réponse SAML
  • Configuration SAML
  • Journaux DEBUG pour SAML (com.adobe.granite.auth.saml)
  • Error.log
  • Fichier HAR[1] pour extraire une demande/réponse SAML

[1]https://help.tenderapp.com/kb/troubleshooting-your-tender-site/generating-an-har-file

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne