Printemps de Sécurité SAML - impossible de vérifier la signature
Je suis en utilisant le Printemps de Sécurité SAML 2.0 échantillon webapp sur Tomcat 7 et modifié pour essayer de l'obtenir pour s'authentifier auprès d'un Ping Identity service. La webapp est en train de parler au service de l'envoi de retour d'une assertion, mais il ne fonctionne pas lorsque vous essayez de vérifier la signature, comme illustré par la sortie de débogage ci-dessous:
- Attempting to verify signature and establish trust using KeyInfo-derived credentials
- Signature contained no KeyInfo element, could not resolve verification credentials
- Failed to verify signature and/or establish trust using any KeyInfo-derived credentials
- Attempting to verify signature using trusted credentials
- Failed to verify signature using either KeyInfo-derived or directly trusted credentials
- Validation of received assertion failed, assertion will be skipped
org.opensaml.xml.validation.ValidationException: Signature is not trusted or invalid
Je comprends que ce n'est pas en mesure de vérifier la signature, et j'ai reçu un certificat de la table de Ping Identité admins à utiliser, mais je ne suis pas sûr de la façon de l'inclure dans la demande. J'ai essayé de l'ajouter à la JKS (keystore) qui vient avec l'exemple d'application utilisant le JDK est keytool programme, mais il n'arrive pas à le trouver là. J'ai aussi essayé de l'ajouter au fournisseur de service de métadonnées xml fichier comme ceci:
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
[Certificate is here...]
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
Toutefois il renvoie toujours la même erreur.
Est-il un endroit précis, je devrais mettre le certificat afin de valider la signature? Je suis relativement nouveau à SAML et de sécurité de l'application en général, donc je m'excuse si je suis en utilisant le mauvais terminologie.
OriginalL'auteur Closeratio | 2012-08-21
Vous devez vous connecter pour publier un commentaire.
Finalement obtenu ce travail. S'avère que j'avais raté une ligne de configuration dans le contexte de sécurité de fichier, et que (il semble) pas de certificat X509 définition s'impose dans le fournisseur de service de métadonnées d'un fichier XML.
Fondamentalement, je l'avais déjà importé la clé publique que j'avais été fourni avec la JKS (à l'aide de
keytool
), mais je n'avais pas dit que l'application à utiliser spécifiquement cette. Pour ce faire, j'ai dû aller dans le contexte de sécurité de fichier (dans mon cas "securityContext.xml") et ajoutez la ligne suivante à laExtendedMetadata
bean définition pour la SP du fichier xml de métadonnées:Ainsi, après cette modification, le
ExtendedMetadataDelegate
bean définition ressemblait à ceci:Espère que cela aide quelqu'un qui pourrait être dans une situation similaire.
OriginalL'auteur Closeratio