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

发布于 2024-09-27 23:08:47 字数 408 浏览 5 评论 0原文

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

因此,我想做的是:

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

这可能吗?如果是这样,我可以从哪里开始寻找如何做到这一点?我觉得我已经很接近了,只是还没有找到正确的 WCF 注入点。

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

Folks,
I am building a RESTful service that is secured by providing an XMLDSIG XML signature at the bottom of the XML document. When I send this document to the server, the WCF service is doing the XML de-serialization method on the HTTP payload to give me a C# class. Unfortunately for this de-serialization to occur properly, the C# class definition needs to have all the properties required to define the XML signature, even though I only need that for security.

So, what I would like to do is this:

  • build a WCF service behavior that, pre-call, examines the XML signature, validates it and then strips it off the XML before the de-serialization for the regular method call.

Is this possible? If so, where can I start looking for how to do this? I feel like I'm close I just haven't found the right WCF injection point.

p.s. Everything is .NET 4.0, Visual Studio 2010, IIS 7+.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍白女子 2024-10-04 23:08:47

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

Figured it out. I created an XmlSignatureVerificationConfigurationSection class that allows me to drop an XML element called directly into my WCF behavior configuration. This config section then points WCF to the data type of my behavior extension, SignatureVerificationBehavior. This behavior then points to a custom Message Inspector I wrote, SignatureVerificationInspector. This inspector pops open the message, removes the signature node from the payload, verifies the signature, and then sends the new (signature removed) message back on down the pipeline where the service definitions remain blissfully ignorant of the presence of signatures.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文