.NET

2014-05-14 7 views
9

से डब्ल्यूएस सुरक्षा के साथ एक वेब सेवा का आह्वान करना मुझे एएसपी.नेट से डब्ल्यूएस-सुरक्षा के साथ सुरक्षित एक वेब सेवा का उपभोग करने की आवश्यकता है।.NET

मैं, SoapUI साथ सेवा का परीक्षण कर रहा हूँ एन्वलप अनुरोध किया जा रहा है:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://aduana.gov.py/webservices"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <web:agregarGuia> 
     <!--Optional:--> 
     <guia>?</guia> 
     <!--Optional:--> 
     <autenticacion> 
      <!--Optional:--> 
      <codAduana>?</codAduana> 
      <!--Optional:--> 
      <firmaWSAA>?</firmaWSAA> 
      <!--Optional:--> 
      <idUsuario>?</idUsuario> 
      <!--Optional:--> 
      <ticketWSAA>?</ticketWSAA> 
     </autenticacion> 
     </web:agregarGuia> 
    </soapenv:Body> 
</soapenv:Envelope> 

और प्रतिक्रिया मैं मिलता है:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> 
    <env:Header/> 
    <env:Body> 
     <env:Fault> 
     <faultcode>env:Server</faultcode> 
     <faultstring>org.jboss.ws.core.CommonSOAPFaultException: This service requires &lt;wsse:Security>, which is missing.</faultstring> 
     </env:Fault> 
    </env:Body> 
</env:Envelope> 

तो मैं सेवा प्रदाता से संपर्क किया और वे मुझे उस से कहा सेवा का आह्वान करना अनिवार्य है डब्ल्यूएस-सुरक्षा का उपयोग करना अनिवार्य है। इसलिए, सर्वर को भेजे गए SOAP संदेश को मेरे प्रमाणपत्र के साथ डिजिटल हस्ताक्षरित होना चाहिए।

समस्या यह है कि मुझे नहीं पता कि यह कैसे करना है। अब तक मैं एक सेवा संदर्भ जोड़ा गया है और मैं कोड में उल्लेख किया प्रमाणपत्र गुजर रही है:

var srvRef = new DnaSoapClient(); 
srvRef.ClientCredentials.ClientCertificate.Certificate = theCert; 
var response = srvRef.agregarManifiesto(dnaManifiesto); 

मैं आसपास googled है और कुछ लोगों को WCF सलाह देते हैं। मैं एक एएसपी.NET 4.5 आवेदन बना रहा हूँ। इस परिदृश्य के साथ मेरे विकल्प क्या हैं? मुझे अपने प्रमाणपत्र का उपयोग करके संदेश पर हस्ताक्षर करने की आवश्यकता है।

संपादित करें 1: मैं इस मुद्दे को आगे बढ़ाने के, अब मैं प्रमाणपत्र द्वारा हस्ताक्षरित सोप ​​संदेश भेज सकते हैं और मैं अपने काम खत्म करने के लिए करीब हूँ में सक्षम था। अब मैं सुरक्षा टैग में सही तत्वों को स्थापित करने में असफल रहा, मैंने प्रश्न लिफाफा, सही और मेरा दोनों दिखाने के लिए प्रश्न संपादित किया।

सही: यह एक सही अनुरोध

<soapenv:Header> 
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-B259DAB3D28E48CB6A140000796019094">MIIC9TCCAd2gAwIBAgIIUiM4nWs8kfcwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UEAwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0UwHhcNMTQwMzIwMTkxMTIwWhcNMTgxMjIwMTQzNzEzWjBBMRQwEgYDVQQDDAtjb3VyaWVyLnRudDEOMAwGA1UECwwFc29maWExDDAKBgNVBAoMA2RuYTELMAkGA1UEBhMCcHkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOS71x5+ChwGzWs4VlLgkePbU8/zFHUrrE8nFNVsukMCc5q5hCK8/CeNM+mxImilLdJrGoC2/000lQetB9B3AqIrAdOfBFU4/qsAlgWI+kt2jnUsJMLRjQfxhAKMeX4RUb0CmTcsnXtWlFvYFFjiUi9nUJVSxCsmldVFgLIAHRPjAgMBAAGjfzB9MB0GA1UdDgQWBBTCwBBmU7f/4SmNz7GNJ25ILkPuhjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFDF+1hOSdgg2DFOUofnnXdx9TxjeMA4GA1UdDwEB/wQEAwIE8DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADggEBAALVVGGNsTSMcfDBwkkNQH3MpfiNTo/mhH8ahqUVN1+5BIwWstv8fH0Sl9ea1XShKLPDfDIx8WSzUUIt/93f74B3a3oMpBtbVEiku2BKUp5cJfkYe2c5zPOxk3nzmQwcEoB++RgX9DJOtUkKA/It2IM9/8ggUyjceJQCpBRiA9Kg7+h3HfmOKNn+9/pNu498JXhSRKa8Jr4pp/1udYRk+W8sKGEBtAU9MvL3y0AbvLhUD+MZyvpHGB17fslC8Nnd5EBQH8hQD+DWGepyCBIlb0NA13YEoLMcRKDcWvSPd0UGWo2G0IOeUZaGuzzIz2n04QrXvnqQKAOFd9yH2VfGtWE=</wsse:BinarySecurityToken> 
    <ds:Signature Id="SIG-96" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
     <ds:SignedInfo> 
     <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
      <ec:InclusiveNamespaces PrefixList="soapenv web" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"></ec:InclusiveNamespaces> 
     </ds:CanonicalizationMethod> 
     <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"></ds:SignatureMethod> 
     <ds:Reference URI="#id-95" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
      <ds:Transforms xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
      <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
       <ec:InclusiveNamespaces PrefixList="web" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"></ec:InclusiveNamespaces> 
      </ds:Transform> 
      </ds:Transforms> 
      <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"></ds:DigestMethod> 
      <ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">whvAdAkypsWVXHXbIz/T54n0dBw=</ds:DigestValue> 
     </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue> 
     MdHy5mceNtQWUD5WmVOzZU8roxD3EQkQmcZA9LsfhBcp3cFAD3P1qJJ9EyrRFBs5yCiYDY716Wzh 
     M+tFybt1+EujXZZ3ytk4XaahkexNAG51iup1wvw0Km+nsj4u/x8DzTA/J9EG3ZdTSUrIVBsFcEQa 
     TF4BwUAgGBS87xqL5zc= 
     </ds:SignatureValue> 
     <ds:KeyInfo Id="KI-B259DAB3D28E48CB6A140000796019095"> 
     <wsse:SecurityTokenReference wsu:Id="STR-B259DAB3D28E48CB6A140000796019096" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
      <wsse:Reference URI="#X509-B259DAB3D28E48CB6A140000796019094" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"></wsse:Reference> 
     </wsse:SecurityTokenReference> 
     </ds:KeyInfo> 
    </ds:Signature> 
    <wsu:Timestamp wsu:Id="TS-94"> 
     <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2014-05-13T19:06:00.188Z</wsu:Created> 
     <wsu:Expires xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2014-05-13T19:07:00.188Z</wsu:Expires> 
    </wsu:Timestamp> 
    </wsse:Security> 
</soapenv:Header> 

खान के लिए एक नमूना लिफाफा, इस काम नहीं कर रहा

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <s:Header> 
    <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPowmum40QT95GqsY7XPKT7LIAAAAAvMwgorinWU+AVOWH+3TPjP6NBU03AZtHqle8GLRYcYAACQAA</VsDebuggerCausalityData> 
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <u:Timestamp u:Id="_0"> 
     <u:Created>2014-05-15T21:30:20.723Z</u:Created> 
     <u:Expires>2014-05-15T21:35:20.723Z</u:Expires> 
     </u:Timestamp> 
     <o:BinarySecurityToken u:Id="uuid-16d1441d-2f30-40a0-ae4e-ec5d557d2261-2" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3">MIIC9jCCAd6gAwIBAgIINNZyZplkQHgwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UEAwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0UwHhcNMTQwMzIwMTgzMjQ3WhcNMTgxMjIwMTQzNzEzWjBCMRUwEwYDVQQDDAxjb3Vycmllci5kaGwxDDAKBgNVBAsMA09QUzEOMAwGA1UECgwFREhMUFkxCzAJBgNVBAYTAlBZMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGoP0dxByIfto/hqJCOhobTdwQJ3AxJkqUeSNFnprAH8zi6HjBJhzkXptqXiR9GZR1H4U3UaN6aczKVh2PaPqU8ooTxjST0ywWBgXA1WP3ukrybUKxpSvqmiRJ/cANAYLovL+gmh2v/fqPiLs7vsgT+zj1330wRGqtrokYPMjlbQIDAQABo38wfTAdBgNVHQ4EFgQU6IHB4XfP7+rbryy1Ru8kFcfSDqcwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBQxftYTknYINgxTlKH5513cfU8Y3jAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQB3NQC+0/VmC7A1MStKdc2NctTo7P+mhvIBe54U/Vs8I5vXiatKz01BzHIbl7chjP063V4YTtehDCGkwUTtARqpkua7RfdlMqsmcr1s3qnD4lUpGuAeVW0Wsrhu1xGjPf02fTBdD3yyGWCeUiNvKuoweeATlGyB/VlHJaZHN4HuJCnWlPic6uUUMBYqrOOa+wJr/OCFHqkEiBsUihD6ergj7AeAAFcG41GI2ZjVWK/PEB71sbQqqGgLpigAS9f8PNMm+TnQuizrvLPKm3hanOKYr9ORrbWjZCL3dva1YobK4ykvUYpncj6YsOtuDi62RcHYjT7IF9UoeZHBE2vePc+K</o:BinarySecurityToken> 
     <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
     <SignedInfo> 
      <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
      <Reference URI="#_0"> 
      <Transforms> 
       <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
      </Transforms> 
      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
      <DigestValue>pM8KraJSLZumo77gD9+JF2f8eBU=</DigestValue> 
      </Reference> 
     </SignedInfo> 
     <SignatureValue>MZ9ZTKeGj5KNUEn4R6cQhRhOdK0frNK1O5KRGbM+YqfvzlVwVKQ6n7p9rncbtrdGsLg3CVwUVwB7PBF78tDx3p0LjF/Eg015t6qouSyK/92qL3oRz/8TbqLKpe/1uySdmGhrqPrVlTDF2rHuFGwmQVSILyUVLg/nW7K+EDwS/Lg=</SignatureValue> 
     <KeyInfo> 
      <o:SecurityTokenReference> 
      <o:Reference URI="#uuid-16d1441d-2f30-40a0-ae4e-ec5d557d2261-2"/> 
      </o:SecurityTokenReference> 
     </KeyInfo> 
     </Signature> 
    </o:Security> 
    </s:Header> 
</s:Envelope> 
+0

जब आप 'DnaSoapClient' का उपयोग करते हैं तो क्या होता है? –

+0

@ जॉन सैंडर्स java.lang.NullPointerException के साथ मेरे चेहरे में सेवा विस्फोट।यही कारण है कि मैंने इसे साबुन के साथ परीक्षण करने का फैसला किया। – Diane

+1

लेकिन 'NullPointerException' स्पष्ट रूप से सर्वर में एक बग है। क्या आप सर्वर लोगों से बात कर सकते हैं और उनसे पूछ सकते हैं कि क्या आप उन्हें भेज रहे हैं तो उनकी बग ट्रिगर करता है? यह संभव है कि आपकी तरफ वास्तव में काम कर रहा है, और सेवा में एक बग है। –

उत्तर

11

मैं इस काम के मैं पोस्ट पाने में कामयाब रहे है दूसरों के लिए यहां समाधान। संक्षेप में, हाथ में कार्य was-security सुविधाओं के साथ जावा में लिखी गई एक वेब सेवा का उपभोग करना था। मुझे स्पष्ट करने दें कि यह एक आसान काम होना चाहिए यदि वेब सेवा डेवलपर जानबूझकर एक अच्छा wsdl लिखता है और/या वे सहयोगी लोग हैं। दुर्भाग्य से वे कोई नहीं हैं। यदि आप इस मामले में हैं तो आपको स्वयं को सेवा लेने के लिए SoapUI और Fiddler से सशस्त्र होना होगा। सोपूआई के साथ पहली चीज सोप संस्करण प्राप्त करती है जो सेवा का उपयोग करती है, जो कि आप उपयोग कर सकते हैं बाध्यकारी के प्रकार को परिभाषित कर सकते हैं, मेरे मामले में यह साबुन 1.1 था और ws-security बल के साथ मुझे विश्वास में कस्टम बाइंडिंग का उपयोग करने के लिए मजबूर किया गया क्योंकि wsHttp बाइंडिंग केवल समर्थन साबुन 1.2 और मूल बाइंडिंग एक डब्ल्यूएस-सुरक्षा सक्षम सेवा का उपभोग करने के लिए लचीला नहीं है।
सर्वर प्रतिक्रियाओं को पढ़ने के लिए परीक्षण-त्रुटियों और बहुत सारे फिडलर के सत्रों के बाद मैं अंततः निम्नलिखित बाध्यकारी के साथ बाहर आया। सभी कॉन्फ़िगरेशन द्वारा किए गए, कोई कोड शामिल नहीं:

<system.serviceModel> 
    <bindings> 

     <binding name="MyBinding" >   
     <textMessageEncoding messageVersion="Soap11"/> 
     <security authenticationMode="MutualCertificate" enableUnsecuredResponse="true" allowSerializedSigningTokenOnReply="true" 
       messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" 
       includeTimestamp="false"> 
     </security> 
     <httpsTransport /> 
     </binding> 

     </customBinding> 


    </bindings> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="ClientCertificateBehavior"> 
      <clientCredentials> 
      <clientCertificate findValue="xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx" 
           storeLocation="CurrentUser" storeName="My" 
           x509FindType="FindByThumbprint" /> 

      <serviceCertificate> 
       <defaultCertificate findValue="xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx" 
            storeLocation="CurrentUser" storeName="My" 
            x509FindType="FindByThumbprint"/> 
       <authentication certificateValidationMode="None" /> 
      </serviceCertificate> 
      </clientCredentials> 

     </behavior> 

     </endpointBehaviors> 

    </behaviors> 
    <client> 

     <endpoint address="https://secure.aduana.gov.py/test/tere/serviciotere" 
     binding="customBinding" bindingConfiguration="MyBinding" 
     contract="serviciotereSoap" name="serviciotereSoap" behaviorConfiguration="ClientCertificateBehavior"> 
     <identity> 
      <dns value="tere_test"/> 
     </identity> 
     </endpoint> 

    </client> 
    </system.serviceModel> 

। एक्सएक्स को अपने प्रमाणपत्र थंबप्रिंट हेक्स मानों के साथ बदलें) । संसाधन जिन्होंने मुझे अलग-अलग मुद्दों को हल करने में मदद की: this और here

+7

हास्य की कमी के लिए जावा डेवलपर्स को दोष न दें। कल्पना करें कि किसी ने सी # ले लिया है और हटाए गए गुण, प्रतिनिधियों, घटनाओं, LINQ, lambdas, async/प्रतीक्षा, उचित जेनेरिक, मूल्य प्रकार, और लगभग हर दूसरी भयानक भाषा सुविधा जिसे आप दैनिक उपयोग करते हैं, और आपको उनके बिना कोड करने के लिए मजबूर किया जाता है। आप भी एक बुरे मूड में होंगे, और शायद किसी की भी मदद करने के लिए तैयार नहीं हैं;) –

+0

ओह @ हाईकोर फिर से आप सही हैं – Diane

+0

आप मेरे नायक हैं! –