我需要发送SOAP / WS-Security / WS-Addressing /的哪几位

| 编辑: 我认为唯一需要了解的是使用用户名令牌配置文件对消息进行签名。关于如何实现的任何指针/线索/信息都将是很棒的。我已经在Visual Studio .Net 2003和WSE 2上玩过,并且用户名令牌配置文件示例是否将其设置为默认值,所以我的后备方式是使用它,但是更喜欢在Linux上运行,因为这就是我们拥有的服务器。再加上没有WSE的Mono端口。我的印象是,它使用不多/已弃用... 我必须与Web服务交谈,并获得下面的示例。我正在尝试将其翻译成英文...或者至少了解我需要与之进行通信的WS安全规范的哪些部分。 我正在将Ruby / Savon用于其他WS调用,但它似乎仅支持基本WSSE,用户名/密码。 我可以看到此消息具有签名-但它是通过外部文件/证书/代码签名的,还是我下面有足够的详细信息以在自己的代码中进行相同的签名。 我没有看到任何X509或Cipher条目,这似乎暗示它没有使用这样的证书(以我对此的幼稚理解),那么产生签名的原因是什么-可能只是消息的简单哈希? 它似乎也使用某种摘要/消息检查,例如当我尝试调整样本并重新发送时,它被反弹为无效-尽管我猜这可能与签名问题有关... 我不认为Savon支持这一点,所以我想我需要切换到JRuby并使用Java WS库,也许是Axis2的Rampart或Spring安全性。有技巧/建议/好的教程吗?我从IBM那里看到了这一点,但是认为我需要更高层次的知识,这样我才能掌握“大局”。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\"
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\">

  <soap:Header>
    <wsa:Action wsu:Id=\"Id-6762c167-412b-4bf8-8839-518e9bc25da5\">
    http://host/path/func</wsa:Action>
    <wsa:MessageID wsu:Id=\"Id-00bb0af8-232d-43a8-adbb-39f230599c56\">
    uuid:2005639d-39b8-4df6-bf41-e18741c45291</wsa:MessageID>
    <wsa:ReplyTo wsu:Id=\"Id-c53a1dbe-244f-46a9-b656-883f4b06dcfe\">
      <wsa:Address>
      http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>
    </wsa:ReplyTo>
    <wsa:To wsu:Id=\"Id-017877f6-e5a3-43ae-aa2b-4886adb7060c\">
    http://host/path/func.asmx</wsa:To>
    <wsse:Security soap:mustUnderstand=\"1\">
      <wsu:Timestamp wsu:Id=\"Timestamp-1a38d0f9-077f-4e95-991b-fa899a171920\">

        <wsu:Created>2011-03-14T15:00:09Z</wsu:Created>
        <wsu:Expires>2011-03-14T15:05:09Z</wsu:Expires>
      </wsu:Timestamp>
      <wsse:UsernameToken xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"
      wsu:Id=\"SecurityToken-42ae32d2-f6ff-431e-9369-7696b44965e3\">
        <wsse:Username>crypteduser</wsse:Username>
        <wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">
        cryptedpass</wsse:Password>
        <wsse:Nonce>fLSoqLm9kuOumxy39JRHaw==</wsse:Nonce>
        <wsu:Created>2011-03-14T15:00:09Z</wsu:Created>
      </wsse:UsernameToken>
      <Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\">
        <SignedInfo>
          <ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"
          xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" />
          <SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#hmac-sha1\" />
          <Reference URI=\"#Id-6762c167-412b-4bf8-8839-518e9bc25da5\">

            <Transforms>
              <Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\" />
            </Transforms>
            <DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" />
            <DigestValue>SAYl5o1kh33HteOe0L7G6KIKqWg=</DigestValue>
          </Reference>
          <Reference URI=\"#Id-00bb0af8-232d-43a8-adbb-39f230599c56\">

            <Transforms>
              <Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\" />
            </Transforms>
            <DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" />
            <DigestValue>//LMuFkNC1FO1/9A9W7l6o75Y2M=</DigestValue>
          </Reference>
          <Reference URI=\"#Id-c53a1dbe-244f-46a9-b656-883f4b06dcfe\">

            <Transforms>
              <Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\" />
            </Transforms>
            <DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" />
            <DigestValue>9pgN7bU48UKi1UTnpOCikOnp2G0=</DigestValue>
          </Reference>
          <Reference URI=\"#Id-017877f6-e5a3-43ae-aa2b-4886adb7060c\">

            <Transforms>
              <Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\" />
            </Transforms>
            <DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" />
            <DigestValue>lWZNjtSHfVtiZeOFZAosV868Uos=</DigestValue>
          </Reference>
          <Reference URI=\"#Timestamp-1a38d0f9-077f-4e95-991b-fa899a171920\">

            <Transforms>
              <Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\" />
            </Transforms>
            <DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" />
            <DigestValue>H3nYPY6kfIWEIWQhpwaz8VKeQIM=</DigestValue>
          </Reference>
          <Reference URI=\"#Id-f95dfea2-3af8-4e95-8e60-141858db9532\">

            <Transforms>
              <Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\" />
            </Transforms>
            <DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" />
            <DigestValue>uRTu+Hzxw+zdaTYgW0z+j35diIQ=</DigestValue>
          </Reference>
        </SignedInfo>
        <SignatureValue>
        Hdn2wxWhmr450pefMuc41o6GgOA=</SignatureValue>
        <KeyInfo>
          <wsse:SecurityTokenReference>
            <wsse:Reference URI=\"#SecurityToken-42ae32d2-f6ff-431e-9369-7696b44965e3\"
            ValueType=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken\" />
          </wsse:SecurityTokenReference>
        </KeyInfo>
      </Signature>
    </wsse:Security>
  </soap:Header>
  <soap:Body wsu:Id=\"Id-f95dfea2-3af8-4e95-8e60-141858db9532\">
    <func xmlns=\"http://host/path/\">
      <xml_in>yucky xml inside xml...</xml_in>
    </func>
  </soap:Body>
</soap:Envelope>
在此先非常感谢您提供的任何提示/指针。 问候, 克里斯 编辑 似乎与此问题类似……确实使用了X509证书,因此也许是必需的。 目前正在为此阅读维基百科条目。 编辑2 似乎是这样-希望基于用户名的选项... http://msdn.microsoft.com/zh-cn/library/ms824647.aspx 编辑3 我想我现在已经完成了大部分排序-突出的主要事情是用户名摘要。我该怎么做-签名值从何而来... 编辑4 我认为最好的选择是在.Net中编写一个客户端,这将为我提供足够的线索直接在Ruby中进行操作,或者我可以将其包装为一个更简单的版本-至少在短期内如此。
已邀请:
这并不是一个完整的答案,只是我注意到的几件事。 wsse:SecurityTokenReference引用此文档(以一种神秘的肥皂方式):http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0。 pdf格式 我会通读:3.2令牌参考 此外,父部分提到了以下公式:
Password_Digest = Base64 ( SHA-1 ( nonce + created + password ) )  
也许尝试这样的签名?
Password_Digest = Base64 ( SHA-1 ( nonce + created + UsernameToken ) )  

要回复问题请先登录注册