这种情况下最适合的身份验证技术是什么?

时间:2009-09-01 02:55:08

标签: wcf web-services wcf-security

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

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

注意:部署该服务的所有计算机都位于同一个域中。

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

目前我正在使用“Windows”

的邮件安全模式

2 个答案:

答案 0 :(得分:1)

如果需要在全球不同的国家/地区部署域名,为什么您希望域名保持一致,我很抱歉。除非您讨论的是在未公开公开的内部网络上托管服务,否则强制执行相同的域名可能会很困难。不同的国家有不同的域名标准。美国有更丰富的领域根源可供选择。其他国家通常具有国家特定的根,可能具有区域子根。

我不会将您的服务与托管它的域相关联,也不建议您使用域作为身份验证的因素。如果您的服务需要在这些国家/地区的互联网上公开展示,我建议您使用Windows安全以外的其他内容。基于声明的安全机制可能效果最佳。在服务实现的内部,可以检查声明,并且如果需要,可以与WCF身份验证分开验证Windows身份。声明还允许您使用的不仅仅是用户名/密码或证书来完全验证和授权客户端请求。您可以请求声明中包含呼叫者域,国家,地区和其他证据,从而允许您验证是否从适当的位置和相应的客户端进行呼叫,其灵活性远远超过Windows身份验证(如果您公开披露您的服务,无论如何都可能无法使用Windows身份验证。)

答案 1 :(得分:1)

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

有关指导,请咨询patterns & practices Improving Web Services Security Guide

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

如果确实只需要Windows身份验证,我仍然会提出授权问题并对其进行记录(如果适用,则会获得注销)。一方面,这涵盖了你,但也让人们明确地意识到决定和可能的风险。