需要将自定义引用URI值添加到我的SignedInfo和SecurityTokenReference。
使用Spring-WS和Spring-WS-Security并创建了一个SOAP客户端,该客户端包括相互身份验证,地址标头以及二进制安全性令牌和签名的设置...都可以正常运行...除非Service provider需要我可以将“引用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:Reference URI =“ MYCUSTOMURI”和 wsse:参考URI =“ MYCUSTOMURI”