我正在学习和设计WCF服务。我已经选择使用Windows凭证作为身份验证方法,并且我已经正确配置了它,因为我可以在测试本地计算机中托管的服务时从事件日志查看器中看到身份验证审核日志。
但现在我想出了这个奇怪的问题:在这样的配置下用户将不会被认证?我的服务是否对同一Windows域中的所有Windows用户进行身份验证,还是可以指定我的域中的哪些特定用户将/将不会进行身份验证?
或者,这是否意味着我只能控制哪些用户(在我的域中)可以执行我的服务通过授权提供的操作(我知道该怎么做)?
听起来很简单,但我发现的所有材料只告诉你如何进行身份验证,并没有说明如何拒绝身份验证请求。
更新: 在阅读了@syneptody的回答之后,我还有两个问题:
答案 0 :(得分:1)
看看这篇文章: http://msdn.microsoft.com/en-us/library/aa702682.aspx
它解释了WCF和ASP.NET之间的连接。如果能够在ASP.NET兼容模式下运行服务,则可以使用ASP.NET授权规则。在您可以利用集成身份验证的域环境中,没有更简单的方法来为您的服务提供授权。
您的服务实施:
[AspNetCompatibilityRequirements(RequirementsMode AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior]
public class Foo { ... }
然后在你的配置中:
<system.web>
<authorization>
<allow users="?" />
<allow roles="DOMAIN_SECURITY_GROUP" />
<deny users="*" />
</authorization>
<authentication mode="Windows" />
<identity impersonate="false" />
</system.web>