将XMLDSIG元素从传入的XML POST剥离到WCF RESTful服务

时间:2010-10-18 14:41:36

标签: xml wcf security encryption xml-signature

民间,   我正在构建一个RESTful服务,它通过在XML文档底部提供XMLDSIG XML签名来加以保护。当我将此文档发送到服务器时,WCF服务正在对HTTP有效负载执行XML反序列化方法,以便为我提供C#类。不幸的是,为了使这种反序列化正确发生,C#类定义需要具有定义XML签名所需的所有属性,即使我只需要安全性。

所以,我想做的是:

  • 构建一个WCF服务行为,预先调用,检查XML签名,验证它,然后在对常规方法调用进行反序列化之前将其从XML中剥离。

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

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

1 个答案:

答案 0 :(得分:0)

想出来。我创建了一个XmlSignatureVerificationConfigurationSection类,它允许我将一个直接调用的XML元素放入我的WCF行为配置中。然后,此配置部分将WCF指向我的行为扩展名SignatureVerificationBehavior的数据类型。然后,此行为指向我编写的自定义Message Inspector,SignatureVerificationInspector。此检查器弹出打开消息,从有效负载中删除签名节点,验证签名,然后将新的(签名已删除)消息发送回管道,其中服务定义仍然无法识别签名的存在。