2015-01-05 12 views
5

का उपयोग नहीं किया गया है मैंने स्प्रिंग एसएएमएल उदाहरण लिया है (अनुभाग 4.2 in this guide देखें) जो ओपन सोर्स लॉगिन पेज एसएसओ के साथ काम करता है, और डब्ल्यूएसओ 2 पहचान सर्वर का उपयोग करने के लिए समर्थन जोड़ने की कोशिश की एक अतिरिक्त आईडीपी सेवा। ऐसा करने के लिए मैंने आईएस के लिए मेटाडेटा एक्सएमएल फ़ाइल जोड़कर वसंत SAML नमूना प्रोजेक्ट को बदल दिया, और आईएस मेटाडेटा के लिए सुरक्षा Context.xml में एक प्रविष्टि जोड़ा।डब्ल्यूएसओ 2 पहचान सर्वर के साथ स्प्रिंग एसएएमएल एकीकरण, एसएएमएल संदेश आईडी को

वसंत आवेदन चलाने पर अब मुझे आईएस का उपयोग करके लॉगिन करने का विकल्प दिया गया है, और जब मैं इसे रीडायरेक्ट कर रहा हूं तो मैं सफलतापूर्वक डब्लूएसओ 2 पर लॉगिन कर सकता हूं। हालांकि वसंत आवेदन आईएस एसएएमएल प्रतिक्रिया पर एक अपवाद फेंकता है इसके बारे में InResponseToField से मेल नहीं खाता है।

2015-01-05 09:54:12,845 line="org.springframework.security.saml.log.SAMLDefaultLogger.log(SAMLDefaultLogger.java:127)" thread="http-nio-8080-exec-4" class="org.springframework.security.saml.log.SAMLDefaultLogger" AuthNResponse;FAILURE;0:0:0:0:0:0:0:1;com:vdenotaris:spring:sp;localhost;;;org.opensaml.common.SAMLException: InResponseToField of the Response doesn't correspond to sent message ae2dab0fb8b0g8e49971b91a73e91i 

आवेदन यह प्रतिक्रिया संदेश प्रकट होता है डिबगिंग से अनुरोध संदेश के रूप में एक ही सत्र से संबंधित के रूप में मान्यता प्राप्त नहीं है। मैं कहता हूं कि इन 2 लॉग संदेशों से, 1 जब AuthRequest भेजने लॉग होता है और 2 जब प्रतिक्रिया मिली है:

2015-01-05 09:53:20,867 line="org.springframework.security.saml.storage.HttpSessionStorage.storeMessage(HttpSessionStorage.java:93)" thread="http-nio-8080-exec-1" class="org.springframework.security.saml.storage.HttpSessionStorage" Storing message ae2dab0fb8b0g8e49971b91a73e91i to session 26D3B7D9E33F26A7A5092BF6909B9D13 
... 
2015-01-05 09:54:10,731 line="org.springframework.security.saml.storage.HttpSessionStorage.retrieveMessage(HttpSessionStorage.java:117)" thread="http-nio-8080-exec-4" class="org.springframework.security.saml.storage.HttpSessionStorage" Message ae2dab0fb8b0g8e49971b91a73e91i not found in session BBF256F284F55D774E6997600E9B3388 

है SAML प्रतिक्रिया है:

<?xml version="1.0" encoding="UTF-8"?><saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://localhost:8080/saml/SSO" ID="adlbklpnldoanfphalcaahhacooinnldcejjjioe" InResponseTo="ae2dab0fb8b0g8e49971b91a73e91i" IssueInstant="2015-01-05T09:53:38.063Z" Version="2.0"> 
    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">localhost</saml2:Issuer> 
    <saml2p:Status> 
     <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/> 
    </saml2p:Status> 
    <saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="ebhfkdhlgbhclcklefjigfddoikklhjlanlbolel" IssueInstant="2015-01-05T09:53:38.065Z" Version="2.0"> 
     <saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">localhost</saml2:Issuer> 
     <saml2:Subject> 
     <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">smit005</saml2:NameID> 
    <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> 
     <saml2:SubjectConfirmationData InResponseTo="ae2dab0fb8b0g8e49971b91a73e91i" NotOnOrAfter="2015-01-05T09:58:38.063Z" Recipient="http://localhost:8080/saml/SSO"/> 
    </saml2:SubjectConfirmation> 
    </saml2:Subject> 
    <saml2:Conditions NotBefore="2015-01-05T09:53:38.065Z" NotOnOrAfter="2015-01-05T09:58:38.063Z"> 
    <saml2:AudienceRestriction> 
     <saml2:Audience>com:vdenotaris:spring:sp</saml2:Audience> 
    </saml2:AudienceRestriction> 
    </saml2:Conditions> 
    <saml2:AuthnStatement AuthnInstant="2015-01-05T09:53:38.068Z" SessionIndex="406d4530-6fcf-4edf-b876-a68de4b4ea79"> 
    <saml2:AuthnContext> 
      <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml2:AuthnContextClassRef> 
    </saml2:AuthnContext> 
    </saml2:AuthnStatement> 
    <saml2:AttributeStatement/> 
    </saml2:Assertion> 
</saml2p:Response> 

संदर्भ के लिए मैं संलग्न मेटाडाटा एक्सएमएल फ़ाइल जिसे मैंने डब्लूएसओ 2 आईएस के लिए जोड़ा था (मुझे इसे 'लोकलहोस्ट' का एक इकाई आईडी देना था क्योंकि डब्लूएसओ 2 लौटने पर जोर देता है (यह डिफ़ॉल्ट रूप से होस्ट नाम का उपयोग करता है))।

<?xml version="1.0" encoding="UTF-8"?> 
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" 
        entityID="localhost" 
        validUntil="2023-09-23T06:57:15.396Z"> 
    <md:IDPSSODescriptor WantAuthnRequestsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" > 
    <md:KeyDescriptor use="signing"> 
     <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
      <ds:X509Data> 
       <ds:X509Certificate>MIICNTCCAZ6gAwIBAgIES343gjANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJVUzELMAkGA1UE 
        CAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxDTALBgNVBAoMBFdTTzIxEjAQBgNVBAMMCWxv 
        Y2FsaG9zdDAeFw0xMDAyMTkwNzAyMjZaFw0zNTAyMTMwNzAyMjZaMFUxCzAJBgNVBAYTAlVTMQsw 
        CQYDVQQIDAJDQTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzENMAsGA1UECgwEV1NPMjESMBAGA1UE 
        AwwJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUp/oV1vWc8/TkQSiAvTou 
        sMzOM4asB2iltr2QKozni5aVFu818MpOLZIr8LMnTzWllJvvaA5RAAdpbECb+48FjbBe0hseUdN5 
        HpwvnH/DW8ZccGvk53I6Orq7hLCv1ZHtuOCokghz/ATrhyPq+QktMfXnRS4HrKGJTzxaCcU7OQID 
        AQABoxIwEDAOBgNVHQ8BAf8EBAMCBPAwDQYJKoZIhvcNAQEFBQADgYEAW5wPR7cr1LAdq+IrR44i 
        QlRG5ITCZXY9hI0PygLP2rHANh+PYfTmxbuOnykNGyhM6FjFLbW2uZHQTY1jMrPprjOrmyK5sjJR 
        O4d1DeGHT/YnIjs9JogRKv4XHECwLtIVdAbIdWHEtVZJyMSktcyysFcvuhPQK8Qc/E/Wq8uHSCo=</ds:X509Certificate> 
       </ds:X509Data> 
      </ds:KeyInfo> 
     </md:KeyDescriptor> 
     <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://localhost:9443/samlsso" ResponseLocation="https://localhost:9443/samlsso"/> 
     <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://localhost:9443/samlsso"/> 
     <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://localhost:9443/samlsso"/> 
     <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</NameIDFormat> 
     <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat> 
     <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat> 
     <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</NameIDFormat> 
    </md:IDPSSODescriptor> 
</md:EntityDescriptor> 

अनुरोध मैं dropbox पर ब्राउज़र HTTP संदेशों के एक लॉग सहेज लिया है।

+0

क्या आप एकल साइन-ऑन प्रक्रिया के दौरान अपने ब्राउज़र के माध्यम से जा रहे HTTP संदेशों का डंप शामिल कर सकते हैं? –

+0

हाय व्लादिमीर, मैंने ब्राउज़र संदेशों के लॉग के लिए एक लिंक जोड़ा है। – user1232555

उत्तर

5

स्प्रिंग एसएएमएल और आपके आईडीपी डब्ल्यूएसओ 2 सर्वर दोनों एक ही डोमेन पर तैनात किए गए हैं - लोकलहोस्ट। ऐसा ही होता है: - और एकल साइन-ऑन

  • WSO2 अनुरोध को स्वीकार करता है और उपयोगकर्ता प्रमाणित करता है initializes, लेकिन अपने स्वयं के सत्र बनाता है (jsessionid

    • स्प्रिंग SAML हेतु HTTP सत्र (82F3ECD1A1E4F9B7DB0134F3129267A5jsessionid) बनाता है - C34B21931C53080487B5B9BA6EB490D2) और उपयोगकर्ता वापस वसंत SAML पर रीडायरेक्ट
    • कंटेनर स्प्रिंग SAML चल jsessionid (C34B21931C53080487B5B9BA6EB490D2) के साथ कुकी प्राप्त करता है, लेकिन के रूप में यह इस तरह के सत्र को नहीं पहचानता है यह उसकी जगह एक नया (E712A8422009613F6FD3901327690726)
    • 0,123,
    • स्प्रिंग SAML मूल अनुरोध के आधार पर प्राप्त किए गए SAML संदेश की पुष्टि करने की कोशिश करता है, लेकिन क्योंकि मूल सत्र अब चला गया है

    इसे ठीक करने के लिए सबसे आसान तरीका स्प्रिंग SAML या के लिए सत्र कुकी नाम बदलने के लिए है, यह नहीं पाया जा सकता WSO2। आप अलग-अलग डोमेन पर अपने एप्लिकेशन को भी तैनात कर सकते हैं (उदाहरण के लिए मेजबान फ़ाइल में अपना लोकहोस्ट एक उपनाम देकर - /etc/hosts या %systemroot%\system32\drivers\etc\hosts)

  • +0

    यह वास्तव में समस्या थी, अंत में मैंने एक वीएम में चलाने के लिए wso2 स्थापित किया। यह किसी अन्य डोमेन का उपयोग करने से अधिक आसान था। – user1232555

    +0

    @ vladimír-schäfer, हम वसंत SAML के लिए सत्र कुकी नाम बदलने का प्रबंधन कैसे करते हैं? –

    +0

    वसंत सुरक्षा के हिस्से के रूप में - यहां http: // stackoverflow देखें।com/प्रश्न/29964921/कस्टम-कुकी-नाम-जब-का उपयोग कर वसंत सत्र –

    संबंधित मुद्दे