Я получаю доступ к стороннему веб-сервису, используя сгенерированный JAX-WS код клиента (Java). Вызов службы, которая инициирует сеанс клиента, возвращает маркер в ответе, который, в частности, содержит подпись. Маркер требуется при последующих обращениях к другим службам в целях аутентификации.
Используя SoapUI, я узнал, что WS/Endpoint требует, чтобы токен использовался как есть... это означает, что все работает нормально, когда я буквально копирую токен (который представляет собой одну большую строку) из исходного ответа на любой запрос, который мне нравится делать следующий.
Теперь я делаю то же самое в своем клиенте JAX-WS. Я получил токен (я скопировал его из ответа, полученного с помощью Fiddler) и успешно протестировал его в последующем вызове с использованием SoapUI.
Однако при последующем вызове службы с помощью клиента JAX-WS часть подписи в маркере изменяется. Это должно выглядеть так:
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">...</Signature>
Но (при захвате запроса с помощью Fiddler) теперь он выглядит так:
<Signature:Signature xmlns:Signature="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.w3.org/2000/09/xmldsig#">...</Signature:Signature>
По-видимому, это неприемлемо в соответствии с WS/Endpoint, поэтому теперь я хотел бы знать:
- Почему токен маршалируется таким образом?
- Что еще более важно, как я могу помешать моему клиенту сделать это?
Заранее спасибо!