代码之家  ›  专栏  ›  技术社区  ›  Kevin Hoffman

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

  •  2
  • Kevin Hoffman  · 技术社区  · 14 年前

    我正在构建一个RESTful服务,该服务通过在XML文档的底部提供XMLDSIG XML签名来保护安全。当我将此文档发送到服务器时,WCF服务正在HTTP负载上执行XML反序列化方法,以给我一个C类。不幸的是,要使这种反序列化正确进行,C类定义需要具有定义XML签名所需的所有属性,尽管我只需要安全性。

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

    这可能吗?如果是,我在哪里可以开始寻找如何做到这一点?我觉得我已经很接近了,只是没有找到合适的注射点。

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

    1 回复  |  直到 13 年前
        1
  •  0
  •   Kevin Hoffman    14 年前

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