Необходимо добавить значения URI пользовательской ссылки в мои SignedInfo и SecurityTokenReference.
Используя Spring-WS и Spring-WS-Security и создал SOAP-клиент, который состоит из взаимной аутентификации, заголовка адреса и настройки двоичного маркера безопасности и подписи ... все генерируется нормально ... кроме того, что требуется от поставщика услуг мне установить Reference URI на конкретное значение, а не на то, которое устанавливает фреймворк.
Я не уверен, как это можно сделать? Я использую Wss4jSecurityInterceptor для создания подписей и т. Д., Но не знаю, как определить конкретные URI.
У меня есть собственный ClientInterceptor, и я подумал, что, возможно, я смогу сделать это там, но не уверен, что это возможно.
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SIG-81fb309">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="SOAP-ENV wsa" />
</ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#id-29b0d50b-caa1-422a-b90d-bb6543300ff1">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>gqH/tJW0lrWqkuugE8cUgkK3ofk=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>abcdefg</ds:SignatureValue>
<ds:KeyInfo Id="KI-624f4c36-5">
<wsse:SecurityTokenReference wsu:Id="STR-b426">
<wsse:Reference URI="#X509-74d2f26b-6e2b-4c07-b290-d4e71a94cd21" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />
</wsse:SecurityTokenReference>
</ds:KeyInfo>
Так что сверху нужно установить пользовательские <ds:Reference/>
и <wsse:Reference/>
URI
ds: ссылка на URI = "MYCUSTOMURI" и
wsse: ссылка на URI = "MYCUSTOMURI"