检查WCF服务的真实性

时间:2012-01-03 14:10:58

标签: .net wcf authentication wcf-security x509certificate

我对WCF服务器身份验证有点失落......

我正在编写一个将由多个客户端访问的WCF服务。 我想确保客户端应用程序始终连接到此服务,而不是实现相同ServiceContracts的某些恶作剧版本。

重要提示:该服务在客户的服务器上运行,并且会像某种授权服务一样,只允许X个客户端(在其他计算机上)同时运行。因此,我不希望副本绕过这个服务,它总是允许所有客户端同时运行。

就我在互联网上找到的情况而言,所有解​​决方案都建议使用服务器证书来获取WCF服务标识。但是,如何阻止某人使用相同的证书在同一台计算机上实施欺诈性服务呢?

该服务将在客户的服务器上运行,因此他们可以在其上运行服务。该服务将像某种授权服务一样,只允许X个客户端(在其他机器上)同时运行。因此,我不希望副本绕过这个服务,它总是允许所有客户端同时运行。

我在这里错过了什么(我觉得我是)?

2 个答案:

答案 0 :(得分:1)

  

但是,如何阻止某人使用相同的证书在同一台机器上实施欺诈性服务呢?

首先,如果您在任何计算机上部署使用机密数据的服务,则可以控制该计算机。客户端主要验证与可信服务器建立的通信,并且客户认为您已尽最大努力保护服务器。

如何阻止某人滥用您的服务器?您将保护您的服务器,并将证书的私钥放入正确的证书存储区。只有运行您的服务(和管理员)的指定帐户才能访问该私钥,因此恶意用户将无法使用它。当然,这需要您信任您的管理员,例如您收集所有审核以便能够验证管理员完成了什么。

还会针对某些特定主机名颁发证书,因此,如果您的服务应用程序已将其指定为主机标头,则它不应该可用于同一服务器上的任何其他应用程序。

如果机密数据被滥用,通常会通过某些协议建立对管理员的信任,并承担巨额罚款。

答案 1 :(得分:0)

您可以在客户端和服务上使用某种密钥/加密机制。

这样,服务和客户端只能与具有密钥的其他进程通信。

这种机制不是100%安全的,所以你必须考虑你的客户将绕过它多远。