我们将IIS 7-8用于MVC4应用程序。访问受 IIS 内置 Windows 身份验证的保护。本地用户(在服务器上添加)和在AD中注册的用户都可以登录。如何从登录功能中排除本地用户?
我的建议是基于AD组构建身份验证。
创建一个或多个 AD 组,并将所需的用户添加到该组。然后,可以将对 Web 应用程序的访问限制为仅这些组。
然后在 MVC 中,您可以在操作、控制器上使用 Authorize
属性,或将其设置为全局筛选器。
基本用法
[Authorize(Roles=@"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.
}