2010-12-07 11 views
5

में एक सुरक्षित वेब सेवा को कॉल करना मुझे किसी तृतीय पक्ष वेब सेवा (SOAP आधारित) को कॉल करने के लिए एक वेब सेवा क्लाइंट लिखना होगा। तीसरे पक्ष ने एक wsdl और संबंधित xsd फ़ाइलों को प्रकाशित किया।जावा

तीसरे पक्ष के प्रमाण पत्र

मैं wsdl2java इस्तेमाल किया मेरी स्टब्स उत्पन्न करने के लिए .p12 का उपयोग कर अपनी वेबसाइट और सेवाओं को सुरक्षित। मैंने एंडपॉइंट्स को संशोधित किया और सेवा कहा। मुझे निम्न त्रुटि मिली:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header></SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <SOAP-ENV:Fault> 
     <faultcode xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">wsse:InvalidSecurity</faultcode> 
     <faultstring>SECU1075: An error was discovered processing the &lt;wsse:Security> header</faultstring> 
     <detail>SECU3510: Signature requirements validation failed: Element (/soapenv:Envelope/soapenv:Body) was not signed</detail> 
     </SOAP-ENV:Fault> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

हम्म, ठीक है। समझ में आता है कि मुझे दस्तावेज़ पर हस्ताक्षर करना चाहिए।

अजीब हिस्सा (मेरे लिए) WSDL फ़ाइल में कहीं भी सुरक्षा परिभाषा नहीं है। क्या यह सामान्य है? मैंने तीसरे पक्ष से संपर्क किया और उन्होंने मुझे एक पीडीएफ भेजा जो एसओएपी संदेश की तरह दिखने की जरूरत है। निम्नलिखित टैग शीर्षक में दिखाई देते हैं: युक्त

<wsse:BinarySecurityToken> 

और

<dsig:SignedInfo> 

तो मैं क्या इकट्ठा, इससे मेरी प्रमाण पत्र और कुछ डिजिटल हस्ताक्षर की आवश्यकता है।

क्या कोई जावा में इन्हें उत्पन्न करने की सिफारिश कर सकता है? मैंने एक्सिस 2/रैंपर्ट पथ को शुरू किया लेकिन ईमानदारी से, ऐसा लगता है कि डब्ल्यूएसडीएल फ़ाइल में परिभाषित सुरक्षा आवश्यकताओं को रखने के लिए उनको सही किया गया है (अगर मैं गलत हूं तो मुझे सही करें)।

उत्तर

4

ऐसा लगता है कि आपको डब्ल्यूएस-सुरक्षा मानक का उपयोग करके आपको संदेश पर हस्ताक्षर करने की आवश्यकता है। डब्ल्यूएस-सुरक्षा मानक wsdl फ़ाइल में कोई सुरक्षा मैपिंग निर्दिष्ट नहीं करता है। कुछ एप्लिकेशन डब्लूएस-सुरक्षा नीति के साथ डब्ल्यूएस-सुरक्षा नीति और डब्ल्यूएस-पॉलिसी अटैचमेंट का उपयोग करते हैं। डब्ल्यूएस-पॉलिसी अटैचमेंट डब्लूएसडीएल को नीतियों को मैप करने का तरीका निर्दिष्ट करता है।

आप

W3.org से इन मानक के बारे में अधिक सीख सकते हैं और हाँ आप सही रास्ते पर हैं, WSS4J इस्तेमाल कर सकते हैं या अक्ष यह तुम्हारी पसंद प्राचीर।

+0

मैंने आपकी टिप्पणी पढ़ने के बाद वास्तव में रामपार्ट के साथ कुछ प्रगति की। मुझे लगता है कि मुझे वास्तव में मुझे यह बताने की ज़रूरत है कि सेवा में खुद को सुरक्षा परिभाषा की आवश्यकता नहीं है। ऐसा लगता है कि अजीब लग सकता है। –