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



我们将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.
}

最新更新