【发布时间】:2010-06-14 08:56:34
【问题描述】:
目前情况如下:
我们有一个生产 .net 3.5 WCF 服务,整个组织中的多个应用程序通过 wsHttpBinding 或 netTcpBinding 使用该服务。使用 Windows 集成安全性在传输级别上完成用户身份验证。该服务有一个方法Foo(string parameter),只能由给定AD组的成员调用。字符串参数是必须的。
一个新的客户端应用程序开始发挥作用(.net 3.5,C# 控制台应用程序),它消除了字符串参数的必要性。但是,只应允许来自此特定应用程序的调用省略字符串参数。服务器仍应知道客户端应用程序调用者的身份,因为 AD 组限制仍然适用(排除客户端的模拟)。
我找到了pass on the "evidence" of the calling (strong-named) assembly in the message headers 的方法,但这种方法显然不安全,因为“证据”很容易被欺骗。 此外,CAS(代码访问安全)似乎是一种可能的解决方案,但我似乎无法弄清楚如何在这种特定情况下使用 CAS。
有人对如何解决这个问题有建议吗?
编辑:我找到了another thread on this subject;显然,结论是根本不可能以安全的方式实施。
【问题讨论】:
-
我还应该提到,客户端应用程序的反编译代码不应向黑客提供信息以模仿身份验证过程。
标签: c# wcf wcf-security wcf-client