2017-10-05 5 views
0

Ich verwende den folgenden Spring Security 1.0.2.RELEASE-Beispielcode, um meine SAML-Behauptung von Spring in einer JSP zu erhalten (letztes Codebeispiel unten). Ich versuche es genau wie in der SAMPLE App. Ich kann sehen, dass meine sp.xml und idp.xml korrekt mit PingIdentity funktionieren, was eine wohlgeformte SAML Assertion in den Logs anzeigt (siehe Ping log assertions unten). Aber wenn ich mir die "token" Variable unten anschaue (siehe Spring Codebeispiel unten), fehlen der Signaturwert und der Digest-Wert. ... die Tags sind immer noch da, was ansonsten wie eine OK SAML2 Assertion aussieht ... ... aber es gibt einige wichtige Werte, wie die Signatur, die fehlen, obwohl Ping tatsächlich diese Werte lieferte. Seltsam, passen Sie die IDs, und auch nicht unter enthalten, sind viele Rollen von Ping auf Frühling richtig in der SAML-Assertion angezeigt "Token" vaiable ...Spring Security SAML-Erweiterung, SAML Assertion Mangled, Signatur verloren

von ping:

2017-10-05 12:43:58,119 tid:fv0iEyiXUF5yhlB_-cZnExX0YTc DEBUG [org.sourceid.saml20.bindings.LoggingInterceptor] Transported Response. OutMessageContext: 
OutMessageContext 
XML: <samlp:Response Version="2.0" ID="F5FQ26j6o6VT0zNdZ4r87pDw8NT" IssueInstant="2017-10-05T10:43:58.072Z" InResponseTo="a1786b4f3g394b812f9edd3ca26c80g" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"> 
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">app1</saml:Issuer> 
    <samlp:Status> 
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/> 
    </samlp:Status> 
    <saml:Assertion ID="VmzXJoyk.9mxifAuyt4.WWi3F1O" IssueInstant="2017-10-05T10:43:58.103Z" Version="2.0" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> 
    <saml:Issuer>app1</saml:Issuer> 
    <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="#VmzXJoyk.9mxifAuyt4.WWi3F1O"> 
      <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>ZnT3MW5R1Nm9y/Pe8Br5m1BXXbXTc0VWeIIkUGyJaOI=</ds:DigestValue> 
     </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue>bHPhuD09Q2az7TxBvJo2LavF2N5YaroZoCNZzG17iJmSVycv0Gfq3liSKb2yIPhY0I9WVr8WwM/N 
dw720okdsEuIbzuy/NYOlOCB3sFaZ6GmmU0FruUHyqjTjGOxHA6504KpvVQjEg3D5iJeNTovKtQR 
tICvKjT4Hv9qTE3tg1viWTnih3xFM++gPffHhfKwWHjXMJTpyy5oQaviYUlQw7Elgv0cyN9ni/jJ 
lFWC0QJJYXK8BwDdyY4MOqvTz8F4DgBnkwAQ+TnPUwuCRDL0ckW84knrWAh4qz18bQzVjSBpT+AI 
7i6NiQ/1L/YnoRvRJ3EttAKUTEO3YrtkJPxcxQ==</ds:SignatureValue> 
    </ds:Signature> 
    <saml:Subject> 

von Frühling (Wert von "Token" weiter unten):

<?xml version="1.0" encoding="UTF-8"?> 
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="VmzXJoyk.9mxifAuyt4.WWi3F1O" IssueInstant="2017-10-05T10:43:58.103Z" Version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <saml:Issuer>app1</saml:Issuer> 
    <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="#VmzXJoyk.9mxifAuyt4.WWi3F1O"> 
       <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#"> 
         <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xs"/> 
        </ds:Transform> 
       </ds:Transforms> 
       <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
       <ds:DigestValue/> 
      </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue/> 
    </ds:Signature> 

Federsicherheitscode ein:

<%@ page import="org.springframework.security.saml.SAMLCredential"%> 
<%@ page import="org.springframework.security.core.context.SecurityContextHolder"%> 
<%@ page import="org.springframework.security.core.Authentication"%> 
<%@ page import="org.opensaml.saml2.core.Attribute"%> 
<%@ page import="org.springframework.security.saml.util.SAMLUtil"%> 
<%@ page import="org.opensaml.xml.util.XMLHelper"%> 
(...) 
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 
    SAMLCredential credential = (SAMLCredential) authentication.getCredentials(); 
    (...)         
    String token = XMLHelper.nodeToString(SAMLUtil.marshallMessage(credential.getAuthenticationAssertion())); 
+0

FYI, in Bezug auf die "Credential" Variable im Ausschnitt Spring Security SAML App, credential.getAuthenticationAssertion(). GetSignature () gibt ein Objekt mit einer Signatur algoythem zurück, aber alle anderen Mitglieder des Signature-Objekts sind null (keyInfo, keyLength, etc ...). Und xmlSignature ist nicht verfügbar, vielleicht API, die ich für openSAML lesen, ist nicht die gleiche Version wie in Spring Security .... – tom

Antwort

0

diese hinzugefügt und habe meine Unterschrift zurückbekommen. Was sagst du, wer kennt meine Benutzerfehler?

<bean id="webSSOprofileConsumer" class="org.springframework.security.saml.websso.WebSSOProfileConsumerImpl"> 
    <property name="releaseDOM" value="false" /> 
</bean> 

..added zu Spring Security SAML Extenion Datei "securityContext.xml"

Verwandte Themen