我有一个WCF SOAP服务,用许可信息进行响应。客户端将保存SOAP响应并在每次程序加载时加载它,验证用户没有通过过期日期等。因此,响应的一个要求是签名,以便客户端可以运行数据通过某种加密算法,并根据已发送的签名检查结果,以验证文件没有任何更改。这不是什么新鲜事,这是XML signing。但是,该服务是使用DataContractSerializer编写的,因此我不能只取数据,创建XML签名,然后直接将其注入到SOAP响应中。WCF wsHttpBinding和XML签名
我知道WsHttpBinding的有一些安全功能,在WS-Security page MSDN上介绍了WS协议WRT结合SOAP作为有能力... ...
确定参与该消息的实体。
证明实体具有正确的组成员资格。
证明实体具有正确的访问权限集合。
证明消息没有改变。
但我找不到它究竟如何做最后一部分。看看我用WsHttpBinding得到的SOAP响应,我看到了CipherData和CipherValue,但研究让我相信这更多的是与实际的消息加密有关,而不是内容验证。我看到类似ValidateResponse和ValidateResult的东西,但是这些看起来像是另一个端点验证信息的空间,并且一旦从该服务获取文件,此产品需要在未连接到互联网的设备上工作。
我知道我理论上可以把所有的数据放入一个变量中,然后告诉我的客户端执行相同的过程,但这很脏,非标准化。我觉得应该有与SOAP签名相同的SOAP响应,但我无法通过搜索找到任何东西。
我怀疑它“证明该消息并未改变“因为否则它不能用你的密钥正确解密。 –
这是不正确的。根据WS-Security规范。它确实在SOAP消息中包含适当的数字签名。 –