【问题标题】:Check authenticity of WCF Service检查 WCF 服务的真实性
【发布时间】:2012-01-03 14:10:58
【问题描述】:

我对 WCF 服务器身份验证有点迷茫...

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

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

据我在互联网上找到的,所有解决方案都建议使用服务器证书作为 WCF 服务标识。但是,这将如何阻止某人仍然使用相同的证书在同一台机器上实施欺诈服务呢?

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

我是否在这里遗漏了什么(我觉得我是)?

【问题讨论】:

  • 您是说其他不应访问您的服务器的人能够在其上运行服务吗?具体来说,您要防止什么?
  • 如何在同一个盒子上部署服务?这不是第一个要回答的问题吗?
  • 嗨,亚当,该服务将在客户的服务器上运行,因此他们能够在其上运行服务。该服务将像某种授权服务一样,只允许 X 数量的客户端(在其他机器上)同时运行。因此,我不希望这个服务被一个总是允许所有客户端同时运行的副本绕过。
  • @KevinMeiresonne:你不能依赖客户端机器上运行的东西来强制执行。您需要一个外部 Web 服务来连接您的服务来执行此类验证。
  • 这使得这是一个完全不同的问题,请使用此信息更新它。

标签: .net wcf authentication wcf-security x509certificate


【解决方案1】:

但这将如何阻止某人仍在使用相同证书的同一台机器上实施欺诈服务?

首先,如果您在任何机器上部署处理机密数据的服务,那么您应该可以控制该机器。客户端主要验证是否与受信任的服务器建立了通信,并且客户端认为您已尽力保护服务器。

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

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

与管理员的信任通常是通过一些协议来建立的,如果机密数据被滥用,将面临巨额罚款。

【讨论】:

  • 嗨 Ladislav,“问题”是它不是我的服务器。所有这些都将安装在客户的服务器上。所以我什至无法控制服务是否正在运行。该服务将像某种授权服务一样,只允许 X 数量的客户端(在其他客户机器上)同时运行。因此,我不希望这个服务被一个总是允许所有客户端同时运行的副本绕过。
  • 在这种情况下,它不是安全问题,而是某些协议再次涵盖的许可问题。避免这种绕过的唯一方法是不在客户端计算机上安装服务,而是从您的服务器或云中公开它,您将可以控制服务和托管环境。
【解决方案2】:

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

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

此机制并非 100% 安全,因此您必须考虑您的客户会绕过它多远。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多