350 Bounty und Waffeln an die Person, die mir helfen können!Entschlüsseln Nachricht mit einem Spring Web Service Client
Ich habe mit Spring Web-Service-Verschlüsselung seit Tagen gekämpft und ich kann nicht herausfinden, wie man Spring-Verschlüsselung auf den Nachrichtentext zu arbeiten. Immer wenn ich den Server die resultierende Nachricht verschlüsseln lasse, scheint der Client diese nicht zu entschlüsseln, bevor er versucht, sie gegen das Schema zu validieren (XSD).
Here is the server side configuration
The server's xwss security configuration
The client's Spring configuration
Was kann ich tun, ist, den Benutzer-Token verschlüsselt und es erfolgreich entschlüsseln. Ich tue das, wenn ich Daten vom Client zum Server sende. Der Server entschlüsselt dann das Benutzertoken und authentifiziert die Benutzeranmeldeinformationen, was sehr gut funktioniert.
Das Problem tritt auf, wenn ich versuche, den Körper der Nachricht zurück zu verschlüsseln. Das Problem tritt auf der Clientseite auf. Es scheint, dass der Client versucht, die Nachricht zu validieren, bevor sie entschlüsselt wird, und daher tritt ein Fehler bei der Validierung gegen das Schema auf.
[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.
Und hier ist die Rangierung Zuordnungsdatei
<?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>
Ich weiß, dass es eine Menge Informationen, aber ich dachte, ich alles bieten würde. Ist meine Verschlüsselungskonfiguration korrekt? Ist es nicht möglich, den Nachrichtentext zu verschlüsseln und auf der Clientseite zu entschlüsseln? An dieser Stelle bin ich offen für fast jeden Vorschlag.
haben Sie noch nicht die ganze Info gegeben;) Geben Sie den vollständigen StackTrace (oder schneiden Sie es zumindest an einem sinnvollen Ort, nicht am Anfang) – Bozho
Das ist alles, was ich für einen Fehler bekomme. Ich bekomme keine ganze Stack-Spur. Der Stack-Trace, den ich erhalte, versucht, die Nachricht gegen die XSD zu validieren, was bei verschlüsselten Daten nicht funktioniert. – Zoidberg
Es klingt, als ob der DecryptionProcessor das Schema dessen, was entschlüsselt wird, kennen möchte, aber nicht. In der Spring-XML Ihres Clients sehe ich nicht, dass die "Schema" -Referenzen irgendwo verwendet werden ... –