Spring WSS тег "wsse: security" - PullRequest
       6

Spring WSS тег "wsse: security"

0 голосов
/ 17 февраля 2012

Я подписываю SOAP-сообщение об использовании Spring, этот документ будет точным. Нет разницы между моей конфигурацией и описанной в документации. Все работает, я подписываю исходящее сообщение, а заголовок выглядит как

<SOAP-ENV:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
        <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-1">
        ...
        </ds:Signature>
    </wsse:Security>
</SOAP-ENV:Header>

Однако проблема в том, что сервер ожидает что-то вроде

<SOAP-ENV:Header>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-1">
    ...
    </ds:Signature>
</SOAP-ENV:Header>

Итак, серверу не нравится моя петиция. Я не могу ничего изменить на сервере, поэтому мне нужно найти решение. Если для создания запроса используется soapUI, в запросе нет тега wsse:Security, поэтому ожидаемый сервер соответствует его WSDL.

Я несколько часов гуглил без удачи. Есть ли способ удалить тег wsse:Security? Могу ли я решить эту проблему с помощью Spring или мне следует реализовать собственный код?

1 Ответ

0 голосов
/ 21 февраля 2012

Ну, я не уверен, что это лучший ответ, но это то, что я выяснил.

Безопасность Spring WS фокусируется на трех различных областях WS-Security: аутентификация, цифровые подписи и шифрование / дешифрование согласно WS-Security .

Две из этих трех областей, Аутентификация и Цифровые подписи, охватываются Подпись XML , поэтому, если вы просто хотите подписать и / или аутентифицировать свое сообщение без шифрования / дешифрования, вы можете использовать XML-подпись напрямую, а не как часть WS-Security. Это был мой случай, клиент просто ожидал <ds:Signature... > напрямую, а не под <wsse:Security ...>

Я не нашел, как это сделать (все это) с Spring WS, поэтому я реализовал его, используя XMLSignature из пакета Apache WSS4J, который является тем же, что Spring делает для подписи сообщения.

...