J'utilise opensaml 2.6.1 et spring-security-saml2-core 1.0.1 dans certains projets pour activer SSO. J'utilise un certificat auto-signé pour le cryptage et la signature.Certificat de confiance SAML
Lorsque mon fournisseur de services a reçu la réponse SAML, je reçois l'erreur suivante:
DEBUG [org.opensaml.xml.signature.SignatureValidator] Creating XMLSignature object
DEBUG [org.opensaml.xml.signature.SignatureValidator] Validating signature with signature algorithm URI: http://www.w3.org/2001/04/xmldsig-more#rsa-sha512
DEBUG [org.opensaml.xml.signature.SignatureValidator] Validation credential key algorithm 'RSA', key instance class 'sun.security.rsa.RSAPublicKeyImpl'
DEBUG [org.opensaml.xml.signature.SignatureValidator] Signature validated with key from supplied credential
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Signature validation using candidate credential was successful
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Successfully verified signature using KeyInfo-derived credential
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Attempting to establish trust of KeyInfo-derived credential
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Failed to establish trust of KeyInfo-derived credential
DEBUG [org.opensaml.xml.signature.impl.BaseSignatureTrustEngine] Failed to verify signature and/or establish trust using any KeyInfo-derived credentials
DEBUG [org.opensaml.xml.signature.impl.ExplicitKeySignatureTrustEngine] Attempting to verify signature using trusted credentials
DEBUG [org.opensaml.xml.signature.impl.ExplicitKeySignatureTrustEngine] Failed to verify signature using either KeyInfo-derived or directly trusted credentials
DEBUG [org.springframework.security.saml.websso.WebSSOProfileConsumerImpl] Validation of authentication statement in assertion failed, skipping
org.opensaml.xml.validation.ValidationException: Signature is not trusted or invalid
at org.springframework.security.saml.websso.AbstractProfileBase.verifySignature(AbstractProfileBase.java:272)
at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAssertionSignature(WebSSOProfileConsumerImpl.java:419)
at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.verifyAssertion(WebSSOProfileConsumerImpl.java:292)
at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:214)
at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:82)
at
Ce que je comprends exception messageis:
- la vérification de la signature est succesful
- Il y a un problème lorsque je fais confiance à mon certificat. Mes correctifs sont-ils corrects?
J'ai importé mon certificat auto-signé à mon keystore (cacerts magasin dans la machine virtuelle Java) en utilisant la commande suivante:
keytool -importcert -trustcacerts -file "myCcert.crt" -keystore "C:\Program Files\Java\jdk1.8.0_65\jre\lib\security\cacerts" -storepass changeit -alias test
doesnt cette commande importe mon certif et marquer comme confiance en java ?
Autre chose, java peut-il faire confiance à une signature auto-signée ou dois-je obtenir un certificat validé par une autorité de certification pour passer la validation?
Oui. Java peut faire confiance à un certificat auto-signé. – anacron
Merci anacron, Alors, quelle peut être la cause de cette exception? – Zizou
Si vous essayez d'implémenter SSL, vous aurez besoin d'un magasin de clés. 'cacerts' est un magasin de confiance et non un magasin de clés. Cela fonctionne très bien si vous voulez accéder au site SSL d'un autre utilisateur. Mais si vous configurez SSL sur votre site, vous aurez besoin d'un fichier de clés différent. – anacron