【问题标题】:HOWTO: Authenticate the client application in WCF如何:在 WCF 中验证客户端应用程序
【发布时间】:2015-02-02 15:24:30
【问题描述】:

场景:

我有一个托管在 Intranet 中的服务器上的 WCF 服务。它公开了一个方法。

我在同一个 Intranet 上有 100,000 多个 Windows 客户端。

在每个客户端上运行的是一个应用程序,它调用 WCF 服务上的单个方法。

但是,我只希望来自该应用程序的调用能够进行该调用。在同一用户帐户下在客户端上运行的任何其他客户端应用程序都应该无法调用该方法。

问题:

我们如何才能实现这种类型的安全性?共享密钥(无论如何都可以通过反向编译发现)是唯一的方法吗?

【问题讨论】:

  • 如果您不希望密钥出现在您的应用程序中,您可以使用客户端证书或 DNS 名称。这些方法是否可行取决于您的域管理员如何设置系统管理。

标签: c# wcf security


【解决方案1】:

应用程序身份通常基于一些客户端机密。但是,如果攻击者应用程序使用与授权应用程序相同的凭据运行,那么很难阻止攻击者应用程序调用您的服务。如何防止攻击者应用程序获取机密?

如果您可以让授权的应用程序在任何帐户下运行,您可以查看grouped managed service accounts。在这种情况下,帐户(和密码)由 Windows 管理。然后,您可以使用证书身份验证并仅授予托管帐户对私钥的读取权限。

不过,分组托管服务帐户确实需要您的域控制器在 Windows 2012 R2 上运行。

【讨论】:

    【解决方案2】:

    看看这个:http://msdn.microsoft.com/en-us/library/aa354513.aspx 此示例使用用户名/密码身份验证,您可以轻松地在客户端应用程序设置中配置并通过调用传递它们。或者您可以使用一段时间后过期的令牌身份验证。

    【讨论】:

      猜你喜欢
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      相关资源
      最近更新 更多