为在多个调用WCF WS的域上运行的后台客户端进程选择WCF安全模型?

为在多个调用WCF WS的域上运行的后台客户端进程选择WCF安全模型?,wcf,wcf-security,Wcf,Wcf Security,我正在使用wsHttpBinding和调用此web服务的相应应用程序创建一个WCF web服务。调用WS的应用程序背后的想法是,它将作为后台进程安装并从多个客户端站点运行。后台进程将通过调用WCF服务定期将信息从其各自的客户端发送回主机。我应该实现什么样的WCF安全模型来确保只有来自各个站点上安装的进程的服务调用才能调用web服务上的方法 注意:web服务将位于防火墙后面;但是,这些额外的信息可能与手头的问题无关。如果没有提到防火墙,我建议两种方法: 具有用户名客户端凭据的消息安全性。此安全模

我正在使用wsHttpBinding和调用此web服务的相应应用程序创建一个WCF web服务。调用WS的应用程序背后的想法是,它将作为后台进程安装并从多个客户端站点运行。后台进程将通过调用WCF服务定期将信息从其各自的客户端发送回主机。我应该实现什么样的WCF安全模型来确保只有来自各个站点上安装的进程的服务调用才能调用web服务上的方法


注意:web服务将位于防火墙后面;但是,这些额外的信息可能与手头的问题无关。

如果没有提到防火墙,我建议两种方法:

  • 具有用户名客户端凭据的消息安全性。此安全模式使用X509服务证书保护消息和用户名令牌,以将客户端的用户名和密码传递给服务
  • 具有证书客户端凭据的消息安全性。此安全模式使用X509服务和客户端证书。客户端证书还用于对客户端进行身份验证
高级方法可以使用支持令牌(如相互证书)来保护消息,并支持用户名令牌进行身份验证

所有这些方法都需要在客户机上安装证书


但在您的情况下,防火墙可以改变解决方案。是否可以使用HTTP端口80从客户端连接到您的服务?如果没有,请检查您的IT是否打开了与您的服务的通信。否则,您将不得不使用Azure.NET服务(云)在您的服务和客户端之间中继通信。这可能会改变安全场景。

IMHO,额外的信息从来都不是无关紧要的。它可能会让人恼火,让我暴躁,但我会尽量不要失去理性。其他网站是否在同一防火墙后面(例如客户网站)?这将作为多个客户正在使用的产品的一部分集成,并将在后台启动主应用程序。客户端将调用的主机服务将位于防火墙后面。我认为,如果存在类似于应用程序角色的应用程序,则只有特定的应用程序才有权使用Web服务。如果我能够使用端口80或其他指定端口进行连接,我是否能够使用上面的2个建议?基本上,我认为每台客户机在主机上看起来都是一样的。使用证书是否会减轻对sql角色提供程序的需求?如果服务可访问,则建议的方法应该有效。仅当您必须不同的客户端角色时,才需要角色提供程序。如果每个客户端都有相同的角色,那么您根本不需要创建授权。因此,如果我按照您的建议去做,我应该无法从任何其他没有正确证书的应用程序调用web服务?如何保护数据库访问?此web服务将写入数据库。另外,与客户机应用程序位于同一台机器上的人员是否可能在工作站上找到证书并使用该证书进行随机web服务调用?对不起,我知道这里有两个不同的问题。证书由您选择的商店保护。若您将证书放在用户存储中,那个么只有该用户才能使用它。客户端证书包含私钥,因此它应始终存储在CurrentUser\My store中。但是,是的,任何拥有证书的人都可以使用这项服务。还有一些与证书相关的更高的安全级别,因为有些证书需要使用PIN,但我从未在WCF中尝试过。