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")]
答
我发现通过我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.
}
谢谢为你的答案。这里的问题:解决方案应该接受没有固定定义的任何域。 – Simon 2015-03-13 10:49:36