我需要发送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中进行操作,或者我可以将其包装为一个更简单的版本-至少在短期内如此。
没有找到相关结果
已邀请:
1 个回复
苛肠倒俱
也许尝试这样的签名?