伙计们,我正在建立一项恢复服务,该服务是通过在XML文档底部提供XMLDSIG XML签名来确保的。当我将此文档发送到服务器时,WCF服务正在执行HTTP有效负载上的XML De-Serialization方法,以给我一个C#类。不幸的是,要正确地进行此次序列化,C#类定义也需要具有定义XML签名所需的所有属性,即使我只需要安全性。

因此,我想做的是:

  • 构建一个WCF服务行为,预先呼叫,检查XML签名,对其进行验证,然后将其从XML上剥离,然后再进行常规方法调用的删除序列化。

这可能吗?如果是这样,我可以在哪里开始寻找如何做?我觉得自己很近,只是没有找到合适的WCF注入点。

PS一切都是.NET 4.0,Visual Studio 2010,IIS 7+。

有帮助吗?

解决方案

弄清楚了。我创建了一个XMLSignatureVerificationConfigurationsection类,该类使我能够将调用的XML元素直接放入我的WCF行为配置中。然后,此配置部分将WCF指向我的行为扩展名的数据类型,即Signaturefificabehavior。然后,此行为指向我写的自定义消息检查器,signatureverificationInspector。该检查员弹出该消息,从有效载荷中删除签名节点,验证签名,然后将新的(已删除的签名删除)发送回去,然后在管道下回到服务定义,在该管道中仍然非常不了解签名的存在。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top