Spring WS SOAP-запрос установить URI ссылки на подпись - PullRequest
0 голосов
/ 16 апреля 2019

Необходимо добавить значения 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"

...