首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WSHttpBinding:消息加密中的Entropy.BinarySecret角色

WSHttpBinding:消息加密中的Entropy.BinarySecret角色
EN

Stack Overflow用户
提问于 2018-06-09 01:59:41
回答 1查看 254关注 0票数 0

我正在用Python编写一个简单的SOAP客户端应用程序。

可以在以下位置找到WSDL文件:https://clients.nationalmailing.com.au/ServiceTest/OrderService.svc?wsdl

不幸的是,服务器在它的WSDL文件中声明了wsHttpBinding的用法,我不得不了解它给非.NET开发人员带来了多少麻烦。

我有可用的C#代码(而且非常简单),并使用Fiddler来捕获流量和分析消息。现在我知道要遵循的结构了。客户端发送2条后续消息。

我设法创建并发送了第一个请求,并收到了来自服务器的响应。但是第二个请求是一种更复杂的方式。我找到了一个库signxml,它帮助我创建了包含所有应该显示的字段的<Signature>结构(根据捕获的流量)。

但是服务器继续回答“错误500:验证消息安全性时发生错误”。

我意识到,在第一条消息中,我只为以下结构设置了随机值:

<s:Body>
        <trust:RequestSecurityToken xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
            <trust:TokenType>http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct</trust:TokenType>
            <trust:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</trust:RequestType>
            <trust:Entropy>
                <trust:BinarySecret
                 u:Id="uuid-0649fd7a-9ae2-4f9f-964c-e3aa5d68e8cd-1" 
                 Type="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Nonce">h/MaeQVSL5Br30Hnt/SAl274flYfZVZyx2Fri9zNuEY=</trust:BinarySecret>
            </trust:Entropy>
            <trust:KeySize>256</trust:KeySize>
        </trust:RequestSecurityToken>
    </s:Body>

BinarySecret 的值只是一个用Base64编码的随机字符串。我认为这应该是这个舞台上的一个问题。我也没有使用服务器响应中的相同参数。

谁能解释一下我应该如何使用Entropy.BinarySecret --它是否应该参与Signature的计算,以及它是如何使用的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 03:50:57

回答我自己的问题。是的,问题出在Entropy参数的不当使用上。

要对需要生成密钥的消息进行签名,它由两部分组成(客户端熵和服务器熵)。它们与P_SHA1算法组合成一个密钥。

给将来找到这篇文章的任何人:对于Python,可以看看signxml库和ws-trust spec的第4节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50766148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档