使用BizTalk(使用WCF适配器)来使用需要使用UsernameToken和Signature的WS-Security的Java服务

时间:2015-12-16 19:07:19

标签: web-services wcf soap biztalk biztalk-2010

我试图将消息从BizTalk 2010发送到由供应商管理的Java Web服务(即我无法控制它)。我有BizTalk配置为使用WCF适配器。 Java Web服务的WS-Security要求要求我在标题中发送一些安全元素,无论我使用什么绑定,我都无法通过BizTalk立即生成 。特别是,我试图一起生成一个Signature和UsernameToken

以下是SOAP请求的外观(使用SOAP UI生成,私有信息隐藏):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      <ds:Signature Id="SIG-5C3CC030C4E11C6430144952223388427" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:SignedInfo>
          <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
          <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
          <ds:Reference URI="#id-REFERENCEID">
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
                <InclusiveNamespaces PrefixList="java" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
              </ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
            <ds:DigestValue>DigestValue</ds:DigestValue>
          </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>
          SignatureValue
        </ds:SignatureValue>
        <ds:KeyInfo Id="KI-KEYID">
          <wsse:SecurityTokenReference wsu:Id="STR-TOKENID">
            <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3">
              KeyIdentifier
            </wsse:KeyIdentifier>
          </wsse:SecurityTokenReference>
        </ds:KeyInfo>
      </ds:Signature>
      <wsse:UsernameToken wsu:Id="UsernameToken-TOKENID">
        <wsse:Username>username</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
        <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">nonce</wsse:Nonce>
        <wsu:Created>2015-12-07T21:03:53.876Z</wsu:Created>
      </wsse:UsernameToken>
    </wsse:Security>
  </soapenv:Header>

我在网上看到过几篇文章,人们一直在努力解决这个问题,但似乎大部分文章都来自2012年左右。有没有人能够解决这个问题/有没有人有任何提示来解决这个问题?

0 个答案:

没有答案