में एक सुरक्षित वेब सेवा को कॉल करना मुझे किसी तृतीय पक्ष वेब सेवा (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 <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/रैंपर्ट पथ को शुरू किया लेकिन ईमानदारी से, ऐसा लगता है कि डब्ल्यूएसडीएल फ़ाइल में परिभाषित सुरक्षा आवश्यकताओं को रखने के लिए उनको सही किया गया है (अगर मैं गलत हूं तो मुझे सही करें)।
मैंने आपकी टिप्पणी पढ़ने के बाद वास्तव में रामपार्ट के साथ कुछ प्रगति की। मुझे लगता है कि मुझे वास्तव में मुझे यह बताने की ज़रूरत है कि सेवा में खुद को सुरक्षा परिभाषा की आवश्यकता नहीं है। ऐसा लगता है कि अजीब लग सकता है। –