350 बाउंटी और उस व्यक्ति के लिए वैफल्स जो मेरी मदद कर सकता है, के साथ संदेश डिक्रिप्ट करना!स्प्रिंग वेब सेवा क्लाइंट
मैं दिन के लिए Spring वेब सेवा एन्क्रिप्शन के साथ संघर्ष कर रहा हूं और मैं यह नहीं समझ सकता कि संदेश निकाय पर स्प्रिंग की एन्क्रिप्शन कैसे प्राप्त करें। जब भी मेरे पास सर्वर परिणामस्वरूप संदेश एन्क्रिप्ट करता है तो क्लाइंट इसे स्कीमा (XSD) के विरुद्ध सत्यापित करने से पहले इसे डिक्रिप्ट नहीं कर रहा है।
Here is the server side configuration
The server's xwss security configuration
The client's Spring configuration
मैं क्या कर सकते हैं उपयोगकर्ता टोकन एन्क्रिप्ट और इसे सफलतापूर्वक डिक्रिप्ट है। मैं करता हूं कि क्लाइंट से सर्वर पर डेटा भेजते समय। सर्वर तब उपयोगकर्ता टोकन को डिक्रिप्ट करता है और उपयोगकर्ता प्रमाण-पत्र प्रमाणित करता है, जो काफी अच्छी तरह से काम करता है।
समस्या तब होती है जब मैं वापस आने वाले संदेश के शरीर को आज़माता और एन्क्रिप्ट करता हूं। मुद्दा ग्राहक पक्ष पर होता है। ऐसा लगता है कि क्लाइंट इसे अस्वीकार करने से पहले संदेश को सत्यापित करने का प्रयास कर रहा है, और इसलिए स्कीमा के विरुद्ध सत्यापन करते समय एक त्रुटि होती है।
[Fatal Error] :1:192: The prefix "ns0" for element "ns0:HolidayListResponse" is not bound.
11-Dec-2009 7:45:32 AM com.sun.xml.wss.impl.apachecrypto.DecryptionProcessor decryptElementWithCipher
SEVERE: WSS1203: Exception [ The prefix "ns0" for element "ns0:HolidayListResponse" is not bound. ] while trying to decrypt message
And here is the SOAP response itself।
और यहाँ मार्शलिंग मैपिंग फ़ाइल
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.org/mapping.dtd">
<mapping>
<field-handler name="dateHandler" class="com.mycompany.hr.handlers.DateFieldHandler" />
<field-handler name="dateHandler2" class="com.mycompany.hr.handlers.DateFieldHandler" />
<class name="com.mycompany.hr.data.Holiday">
<map-to ns-uri="http://mycompany.com/hr/schemas" ns-prefix="ns0" xml="Holiday" />
<field name="from" type="string" handler="dateHandler">
<bind-xml name="StartDate" node="element" />
</field>
<field name="to" type="string" handler="dateHandler2">
<bind-xml name="EndDate" node="element" />
</field>
</class>
<class name="com.mycompany.hr.data.Employee">
<map-to ns-uri="http://mycompany.com/hr/schemas" ns-prefix="ns0" xml="Employee" />
<field name="number" type="java.lang.Integer">
<bind-xml name="Number" node="element" />
</field>
<field name="firstName" type="java.lang.String">
<bind-xml name="FirstName" node="element" />
</field>
<field name="lastName" type="java.lang.String">
<bind-xml name="LastName" node="element" />
</field>
</class>
<class name="com.mycompany.hr.data.HolidayRequest">
<map-to ns-uri="http://mycompany.com/hr/schemas" ns-prefix="ns0" xml="HolidayRequest" />
<field name="holiday" type="com.mycompany.hr.data.Holiday">
<bind-xml name="Holiday" node="element" />
</field>
<field name="employee" type="com.mycompany.hr.data.Employee">
<bind-xml name="Employee" node="element" />
</field>
</class>
<class name="com.mycompany.hr.data.HolidayConfirmation">
<map-to ns-uri="http://mycompany.com/hr/schemas" ns-prefix="ns0" xml="HolidayConfirmation" />
<field name="confirmationCode" type="java.lang.Integer">
<bind-xml name="ConfirmationCode" node="element" />
</field>
<field name="confirmationMessage" type="java.lang.String">
<bind-xml name="ConfirmationMessage" node="element" />
</field>
</class>
<class name="com.mycompany.hr.data.HolidayResponse">
<map-to ns-uri="http://mycompany.com/hr/schemas" ns-prefix="ns0" xml="HolidayResponse" />
<field name="confirmation" type="com.mycompany.hr.data.HolidayConfirmation">
<bind-xml name="HolidayConfirmation" node="element" />
</field>
</class>
<class name="com.mycompany.hr.data.HolidayListRequest">
<map-to ns-uri="http://mycompany.com/hr/schemas" ns-prefix="ns0" xml="HolidayListRequest" />
<field name="id" type="java.lang.Integer">
<bind-xml name="userId" node="element" />
</field>
</class>
<class name="com.mycompany.hr.data.HolidayListResponse">
<map-to ns-uri="http://mycompany.com/hr/schemas" ns-prefix="ns0" xml="HolidayListResponse" />
<field name="holidays" type="com.mycompany.hr.data.Holiday" collection="vector">
<bind-xml name="Holiday" node="element" />
</field>
</class>
</mapping>
मैं जानता हूँ कि यह जानकारी का एक बहुत कुछ है, लेकिन मैं समझ मैं सब कुछ प्रदान करेगा। क्या मेरा एन्क्रिप्शन सेटअप सही है? क्या यह संभव नहीं है कि संदेश के शरीर को एन्क्रिप्ट करें और इसे क्लाइंट साइड पर डिक्रिप्ट करें? इस बिंदु पर मैं लगभग किसी भी सुझाव के लिए खुला हूँ।
आपने अभी तक पूरी जानकारी नहीं दी है;) पूर्ण स्टैकट्रैक दें (या कम से कम इसे सार्थक जगह पर कट करें, शुरुआत में नहीं) – Bozho
मुझे एक त्रुटि के लिए मिलता है। मुझे पूरा स्टैक ट्रेस नहीं मिलता है। मुझे लगता है कि स्टैक ट्रेस एक्सएसडी के खिलाफ संदेश को सत्यापित करने का प्रयास कर रहा है, जो एन्क्रिप्टेड डेटा पर काम नहीं करेगा। – Zoidberg
ऐसा लगता है कि डिक्रिप्शन प्रोसेसर यह तय करना चाहता है कि यह किस चीज को डिक्रिप्ट कर रहा है, लेकिन नहीं। अपने ग्राहक के वसंत xml में मुझे कहीं भी "स्कीमा" संदर्भों का उपयोग नहीं किया जा रहा है ... –