.net 将WCF服务限制为特定客户端应用

.net 将WCF服务限制为特定客户端应用,.net,wcf,wcf-security,.net,Wcf,Wcf Security,我已经创建了托管在iis下的.Net wcf服务。这些服务正在使用ssl 客户有安全需求。应该只允许从特定的客户端应用程序使用服务 这些服务已经在使用windows身份验证,并且仅限于特定用户。 识别消费者的ip或使用证书还不够好,因为从理论上讲,来自经批准的客户端计算机的经批准用户将能够使用不仅来自预期客户端应用程序的服务 是否有一种安全的方法来实现这一点?如果使用消息安全性,则可以指定用于对消息进行签名的X509证书。这将锁定特定计算机的使用(组策略可用于控制证书的安装) 如果您需要将其限制

我已经创建了托管在iis下的.Net wcf服务。这些服务正在使用ssl

客户有安全需求。应该只允许从特定的客户端应用程序使用服务

这些服务已经在使用windows身份验证,并且仅限于特定用户。 识别消费者的ip或使用证书还不够好,因为从理论上讲,来自经批准的客户端计算机的经批准用户将能够使用不仅来自预期客户端应用程序的服务


是否有一种安全的方法来实现这一点?

如果使用消息安全性,则可以指定用于对消息进行签名的X509证书。这将锁定特定计算机的使用(组策略可用于控制证书的安装)

如果您需要将其限制为特定的用户,而不是特定的机器或设备,那么这是一条可行的道路


另外,可能会有帮助,尽管我鼓励您尽可能多地使用常规安全机制,而不是使用自己的。

也许可以在客户端应用程序中为请求添加标题,然后在服务器上检查?限制应设置为只允许特定的客户端应用程序,而不只允许机器或用户。@Yosimurer我过去通过使用只有应用程序才能访问的X509证书。您可以将其作为加密资源发送到应用程序中。这并不是完全安全的,但也几乎没有。限制应该设置为只允许特定的客户端应用程序,而不仅仅是机器或用户。我考虑过使用头文件,但我不确定这个方法是否足够安全。可以使用诸如fiddler之类的工具轻松地截获http消息的其余部分的头。SSL的使用会保证http头的安全吗?@YosiMaurer SSL只有在有人启动同一台机器上的Fiddler并检查出所有信息后才是安全的。让我重复一遍:没有完全安全的方法可以做到这一点,你只能让它难以置信地难以打破。X509是一种方式-可以设置服务器绑定,以便任何不使用该证书的设备都无法连接。SSL除了读取WCF管道的内容(它是传输安全性,而不是消息安全性)之外,不会阻止任何事情。