【问题标题】:What is the best suited authentication technique for this scenario?最适合这种情况的身份验证技术是什么?
【发布时间】:2009-09-01 02:55:08
【问题描述】:

请建议我在下面提到的场景中实现的最佳身份验证方式:

要求我必须在全球多个国家/地区部署 WCF Web 服务。

注意:部署服务的所有机器都在同一个域中。

1. 访问此服务的客户端应属于同一域,否则身份验证将失败。

目前我正在使用“Windows”使用消息安全模式

【问题讨论】:

  • 一些问题。该服务会在域网络上公开吗?您希望谁能够调用该服务?是否有人登录到允许调用该服务的域?您可能还想考虑授权和身份验证。
  • 是的,该服务公开在域网络上,只有同域中的客户端可以访问该服务。实际上,我们会将桌面应用程序提供给客户端,通过它可以调用 Web 服务的方法(如读取和写入)。

标签: wcf web-services wcf-security


【解决方案1】:

我很好奇,如果域需要部署在世界各地的不同国家,为什么您会希望域相同。除非您正在谈论将服务托管在未公开公开的内部网络上,否则执行相同的域名可能会很困难。不同的国家有不同的域名标准。美国有更丰富的域根可供选择。其他国家/地区通常具有特定于国家/地区的根,可能带有区域子根。

我不会将您的服务与托管它的域耦合,也不建议将域用作身份验证的一个因素。如果您的服务需要在这些国家/地区的 Internet 上公开公开,我建议您使用 Windows 安全以外的其他东西。基于声明的安全机制可能效果最好。在服务实现内部,可以检查声明,如有必要,可以将 Windows 身份与 WCF 身份验证分开进行身份验证。声明还允许您使用不仅仅是用户名/密码或证书来完全验证和授权客户端请求。您可以请求在声明中包含呼叫者的域、国家、地区和其他证据,从而允许您验证呼叫是从适当的位置和适当的客户端发出的,比使用 Windows 身份验证更灵活(如果您公开您的服务,Windows 身份验证可能无论如何都不可用。)

【讨论】:

  • 不同意您写的内容,但在我看来,发帖人是在谈论在私有 WAN 上部署服务器,而不是互联网。
  • 是的 Tuzo 是对的。该服务部署在 WAN 上而不是互联网上
  • 如果它在 WAN 上,那么同一个域显然应该不是问题。如果服务提供的行为需要经过身份验证的 Windows 帐户才能运行,那么我将使用 Windows 安全性。但是,如果该行为不需要 Windows 帐户,我会考虑使用其他一些身份验证机制,例如证书。 Windows 身份验证完全依赖于域,并且可能滞后。证书通常更适合需要身份验证的非人类实体,并且可以独立于域进行管理。
【解决方案2】:

由于您在 Intranet 上运行并假设您的 Windows 应用程序将直接连接到该服务,因此我将使用 Windows 身份验证使用传输安全性。

如需指导,请咨询patterns & practices Improving Web Services Security Guide

我仍然怀疑您是否需要授权。如果您在没有任何授权的情况下使用 Windows 身份验证,它将简化您的服务,但将允许 任何 域用户访问您的服务,无论他们是否使用 Windows 应用程序。当然,他们必须了解端点和消息结构,但他们仍然可以这样做。

如果真的只需要 Windows 身份验证,我会仍然提出授权问题并记录下来(如果适用,请签署)。一方面,这涵盖了您,但也让人们明确地意识到决策和可能的风险。

【讨论】:

  • 感谢 Tuzo 的回复。是的,我通过 AD 进行授权。进行身份验证后,我将查看该用户所属的组,并根据该组设置该特定用户的角色。你能建议授权吗??
猜你喜欢
  • 2011-03-01
  • 1970-01-01
  • 2023-03-11
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
相关资源
最近更新 更多