2016-07-29 4 views
0

Ich versuche das Spring SAML Beispielprojekt mit SSOCircle und Standard Keystore. Nach dem Importieren der SP-Metadaten in SSOCircle funktionierte das SSO ordnungsgemäß.Frühling SAML Beispiel: SSOCircle SHA256 nicht unterstützt

Jetzt wollte ich den Verschlüsselungsalgorithmus von SHA-1 zu RSA SHA-256 ändern. So dehnte ich die SAMLBootstrap Klasse wie hier gezeigt:

public final class CustomSAMLBootstrap extends SAMLBootstrap { 

    @Override 
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { 
     super.postProcessBeanFactory(beanFactory); 
     BasicSecurityConfiguration config = (BasicSecurityConfiguration) Configuration.getGlobalSecurityConfiguration(); 
     config.registerSignatureAlgorithmURI("RSA", SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); 
     config.setSignatureReferenceDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA256); 
    } 

Auch hier ist die erweiterte Metadaten-Konfiguration

<!-- Extended metadata properties --> 
<bean id="extendedMetadataSP" class="org.springframework.security.saml.metadata.ExtendedMetadata"> 
    <property name="local" value="true"/> 
    <property name="securityProfile" value="metaiop"/> 
    <property name="sslSecurityProfile" value="pkix"/> 
    <property name="signingKey" value="apollo"/> 
    <property name="encryptionKey" value="apollo"/> 
    <property name="signMetadata" value="true" /> 
    <property name="signingAlgorithm" value="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> 
    <property name="idpDiscoveryEnabled" value="true"/> 
    <property name="idpDiscoveryURL" value="${entityBaseURL}/saml/discovery"/> 
    <property name="idpDiscoveryResponseURL" value="${entityBaseURL}/saml/login?disco=true"/> 

</bean> 

Also habe ich die Metadaten über die org.springframework.security.saml.metadata.MetadataGenerator Bean regeneriert und versucht, die neu generierten neu laden SP xml. Obwohl SSOCircle mit 007 Fehlercode fehlschlägt.

enter image description here

An diesem Punkt bin ich nicht sicher, ob es ein für mich zu vervollständigen, um zusätzlichen Schritt ist sha256 auf SSOCircle zu benutzen?

Kann mir bitte jemand helfen?

EDIT:

Das Problem, das ich bin, wenn die Metadaten zu SSOCircle Hochladen glaube ich es mit dem EntityDescriptor Abschnitt zu tun hat, wo die Signatur algorith wie unten als SHA256 angegeben:

<?xml version="1.0"?> 
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
<ds:SignedInfo> 
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
    <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> 
    <ds:Reference URI="#urn_com_apakgroup_bristol"> 
     <ds:Transforms> 
      <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> 
      <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
     </ds:Transforms> 
     <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> 
     <ds:DigestValue>mAT5iN6IWyTCQiPplFmOq4vu8SUzCBfpAC4XBOu2+eM=</ds:DigestValue> 
    </ds:Reference> 
</ds:SignedInfo> 
<ds:SignatureValue>i6hH............bA==</ds:SignatureValue> 
<ds:KeyInfo> 
    <ds:X509Data> 
     <ds:X509Certificate>MIIDZTCCA............eVdvh</ds:X509Certificate> 
    </ds:X509Data> 
</ds:KeyInfo> 
</ds:Signature> 

SignMetadata wurde auf false geändert, aber das macht keinen Unterschied.

<property name="signMetadata" value="false" /> 

SAML RESPONSE:

2016-09-13 15:03:06,786 DEBUG org.opensaml.xml.security.SigningUtil:115 - Computing signature over input using private key of type RSA and JCA algorithm ID SHA256withRSA 
2016-09-13 15:03:06,802 DEBUG org.opensaml.xml.security.SigningUtil:123 - Computed signature: 8b4...dfa9 
2016-09-13 15:03:06,802 DEBUG opensaml.saml2.binding.encoding.HTTPRedirectDeflateEncoder:251 - Generated digital signature value (base64-encoded) i0...== 
2016-09-13 15:03:06,803 DEBUG PROTOCOL_MESSAGE:74 - 
<?xml version="1.0" encoding="UTF-8"?><saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="http://localhost:8080/saml/SSO" Destination="https://idp.ssocircle.com:443/sso/SSORedirect/metaAlias/publicidp" ForceAuthn="false" ID="ac8eeg2j9d932hh4fe90fa71844e00" IsPassive="false" IssueInstant="2016-09-13T14:03:06.775Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0"> 
    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">...[my-sp]...</saml2:Issuer> 
</saml2p:AuthnRequest> 

2016-09-13 15:03:06,803 DEBUG opensaml.ws.message.encoder.BaseMessageEncoder:56 - Successfully encoded message. 
2016-09-13 15:03:06,804 DEBUG springframework.security.saml.storage.HttpSessionStorage:93 - Storing message ac8eeg2j9d932hh4fe90fa71844e00 to session C17D8A94DED2F79BDD92CBF7A99462C6 
2016-09-13 15:03:06,805 INFO springframework.security.saml.log.SAMLDefaultLogger:127 - AuthNRequest;SUCCESS;0:0:0:0:0:0:0:1;...[my-sp]...;https://idp.ssocircle.com;;; 
+0

Könnten Sie bitte eine Beispielanfrage stellen, die zu dem Fehler führt, sowie den oben erwähnten Debug-Trace? – Hos

+0

Ich habe Keystore mit SHA256 erstellt und es hat funktioniert. Möglicherweise haben Sie anderswo Probleme. – Alic

Antwort

0

Der Grund für error7 ist, dass die Signatur der Metadaten können nicht überprüft werden. Dies wird beschrieben unter: how-to section "Signierte Metadaten können zu Validierungsproblemen führen. Wir empfehlen, die Signatur als schnellste Problemumgehung zu entfernen."

Sie haben Meta-Datensignatur aktiviert:

<property name="signMetadata" value="true" /> 

es wiederum auf "false".

+0

Hallo ich habe es falsch gemacht, machte keinen Unterschied. Danke, dass du trotzdem hilfst – nuvio

+0

Wenn es dir nichts ausmacht, poste bitte die Metadaten hier. – Hos