8

我有兩個應用,一個是窗體身份驗證,看起來像這樣:ASP.NET混合身份驗證

<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. 用戶填寫他們的用戶名和密碼的形式authen tication應用和點擊提交

  2. 的LoginCheck方法,採用用戶名和密碼,驗證對抗是Windows身份驗證

我,希望我得到的Windows身份驗證應用程序話說響應的應用程序是這個用戶名和密碼是正確的,繼續或沒有他們不工作

我在正確的軌道上我想完成?我的問題是我不知道如何完成第2部分,如果有人能幫助我,那將是驚人的或者指向正確的方向。

+0

爲什麼需要混合它?如果Web堆棧位於您的域中,並且您有權訪問AD,爲什麼不使用Windows身份驗證?如果沒有,那爲什麼要使用windows auth呢? –

+0

混合它,因爲我想用一個窗體而不是一個醜陋的對話框。 – user979331

+3

我很確定Windows代碼驗證發生在您的代碼執行之前。您最好使用Forms Authentication並使用ActiveDirectoryMembershipProvider,如[this](https://msdn.microsoft.com/en-us/library/ff650308.aspx)。 –

回答

1

使用集成Windows身份驗證(IWA)時,瀏覽器應使用Windows憑據自動登錄到網站。

這裏有一些事情你可以檢查:

  • 請問您的瀏覽器支持IWA?
  • 瀏覽器和網站之間是否有HTTP代理?
  • 您的機器是否登錄到您的網站託管的Windows域?
  • IE設置是否指定提示輸入憑據? enter image description here

又見答案this question更多的建議。

2

如果您不必爲其他原因使用第二個應用程序,我會建議使用其他方式來驗證憑據。

例子: https://stackoverflow.com/a/499716/5036838

後的憑據進行驗證,你可以使用任何類型的Cookie /認證基礎進行。