IIS中的Windows身份验证 - 禁止MVC4应用程序的本地用户

问题描述:

我们正在为我们的MVC4应用程序使用IIS 7-8。访问受到IIS内置Windows身份验证的保护。本地用户(添加到服务器上)和AD中注册的用户都可以登录。如何排除本地用户的登录能力?IIS中的Windows身份验证 - 禁止MVC4应用程序的本地用户

我的建议是建立基于AD群的认证。

您可以创建一个或多个AD群组并将您想要的用户添加到该群组。然后,您可以将对您的Web应用程序的访问权限仅限于这些组。

然后在MVC中,您可以在您的Actions,Controllers上使用Authorize属性,或将其设置为全局过滤器。

基本用法

[Authorize([email protected]"MyCompanyDomain\\company-group-name-here")] 
+0

谢谢为你的答案。这里的问题:解决方案应该接受没有固定定义的任何域。 – Simon 2015-03-13 10:49:36

我发现通过我MVC4 C#代码的解决方案:

public static bool IsLocalUser(WindowsIdentity pIdentity) 
{ 
    // establish domain context   
    PrincipalContext lMachineContext = new PrincipalContext(ContextType.Machine); 

    // find user 
    UserPrincipal lMachineUser = UserPrincipal.FindByIdentity(lMachineContext, pIdentity.Name); 

    return lMachineUser != null; 
} 

在我的控制器,调用该方法,并通过身份:

if(IsLocalUser(HttpContext.User.Identity as WindowsIdentity)) 
{ 
    // block and refer to error site. 
}