如何在具有多个域的ASP.NET MVC4应用程序中允许Windows身份验证

本文关键字:应用程序 MVC4 NET 身份验证 Windows ASP | 更新日期: 2023-09-27 18:25:21

MVC4应用程序中关于Windows身份验证的两个问题:

  1. 如何设置它,以便可以针对两个windows域进行身份验证

我想做的事:

[Authorize(Roles = @"DOMAINONE'Group Name")]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
    ...
}

另一个领域:

[Authorize(Roles = @"DOMAINTWO'Group Name")]
public class StaffController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
    ...
}
  1. 有没有办法让登录屏幕成为页面上的一个表单,而不是弹出窗口询问用户名/密码

如何在具有多个域的ASP.NET MVC4应用程序中允许Windows身份验证

您可能希望看到Windows和表单身份验证的结合:有没有办法让登录屏幕成为页面上的表单,而不是弹出窗口要求输入用户名/密码

如果您处于经典模式,则可以同时使用Windows和Forms身份验证。将弹出警报

Challenge-based and login redirect-based authentication cannot be used 
simultaneously

但是,您可以忽略此警告。CarlosAg说:

we decided to leave it there was because it is still behavior that many user 
scenarios  would be consider incorrect, since most of the time forms 
authentication  uses anonymous  authentication and not windows.

请阅读此处。

现在,当您想要使用windows身份验证时,您可以在这里找到解决方案:http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/,允许更改页面的身份验证方式。当使用windows身份验证时,可以管理此问题的另一种方法是使用代码管理用户名:

string user = Request.ServerVariables["LOGON_USER"];

请参阅此链接:http://beensoft.blogspot.in/2008/06/mixing-forms-and-windows-authentication.html,提供了一种不同的混合表单和Windows身份验证的方式。

如果您还没有在web.config中设置身份验证模式,那么您需要做的第一件事就是设置身份验证。

<system.web>
  <authentication mode="Windows"/>
</system.web>

如果用户已经在他/她的域中进行了身份验证,这应该可以消除挑战。

DOMAINONE和DOMAINTWO子域是同一个域吗?