ASP.NET混合身份验证

时间:2015-09-15 20:21:28

标签: c# asp.net authentication forms-authentication windows-authentication

我有2个应用程序,一个是表单身份验证,看起来像这样:

<authentication mode="Forms">
        <forms loginUrl="~/Login"></forms>
      </authentication>

public class LoginController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult LoginCheck()
        {

            string username = Request.Form["username"];

            FormsAuthentication.RedirectFromLoginPage(username, true);

            return RedirectToAction("Index", "Home");
        }
    }

另一个应用程序为空,但使用的是Windows身份验证:

<authentication mode="Windows" />

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Title = "Home Page";

            return View();
        }
    }

我要做的是以下内容:

  1. 用户在表单身份验证应用程序中填写用户名和密码,然后单击“提交”

  2. LoginCheck方法,获取用户名和密码,并针对Windows身份验证的应用程序进行身份验证

  3. 我希望我从Windows身份验证应用程序得到回复,说明这个用户名和密码是正确的,继续或者没有它们不起作用

    我是否正确地想要完成什么?我的问题是我不知道如何完成第2部分,如果有人可以帮助我,这将是惊人的或指向我正确的方向。

2 个答案:

答案 0 :(得分:2)

如果您出于其他原因不必使用第二个应用程序,我建议您使用其他方式验证凭据。

实施例: https://stackoverflow.com/a/499716/5036838

验证凭据后,您可以使用任何类型的基于cookie的身份验证来继续。

答案 1 :(得分:1)

使用集成Windows身份验证(IWA)时,您的浏览器应使用您的Windows凭据自动登录该网站。

以下是您可以查看的一些内容:

  • 您的浏览器是否支持IWA?
  • 您的浏览器和网站之间是否有HTTP代理?
  • 您的计算机是否已登录到托管您网站的Windows域?
  • IE设置是否指定提示输入凭据? enter image description here

有关更多建议,请参阅this question的答案。