Odszyfrowywanie wiadomości za pomocą klienta usługi Spring Web Service

350 Bounty i gofry dla osoby, która może mi pomóc!

Walczyłem z tymWiosna Szyfrowanie usługi internetowej przez kilka dni i nie mogę się dowiedzieć, jak włączyć szyfrowanie Springa do treści wiadomości. Ilekroć serwer szyfruje otrzymany komunikat, klient najwyraźniej nie odszyfrowuje go przed próbą sprawdzenia poprawności względem schematu (XSD).

Oto konfiguracja po stronie serwera

Konfiguracja zabezpieczeń serwera xwss

Konfiguracja Spring klienta

Konfiguracja xwss klienta

Co mogę zrobić, to zaszyfrować token użytkownika i odszyfrować go pomyślnie. Robię to przy wysyłaniu danych z klienta do serwera. Serwer następnie odszyfrowuje token użytkownika i uwierzytelnia poświadczenia użytkownika, co działa całkiem dobrze.

Problem występuje, gdy próbuję zaszyfrować treść wracającej wiadomości. Problem występuje po stronie klienta. Wygląda na to, że klient próbuje sprawdzić poprawność komunikatu, zanim go odszyfrowuje, i dlatego pojawia się błąd podczas sprawdzania poprawności względem schematu.

[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

A oto sama odpowiedź SOAP.

A oto plik mapowania marshallingu

<?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>

Wiem, że to dużo informacji, ale pomyślałem, że zapewnię wszystko. Czy moje ustawienia szyfrowania są prawidłowe? Czy nie można zaszyfrować treści wiadomości i odszyfrować jej po stronie klienta? W tym momencie jestem otwarty na niemal każdą sugestię.

questionAnswers(2)

yourAnswerToTheQuestion