Asp.net

ASP.NET MVC 4 的 Windows 身份驗證 - 它是如何工作的,如何測試它

  • June 20, 2013

我以前從未對ASP.NET MVC Web 應用程序使用過 Windows 身份驗證,而是使用表單身份驗證。最近,我有一個 ASP.NET MVC 4 Web 應用程序,該應用程序需要為獲准登錄我公司 Web 伺服器的使用者實施 Windows 身份驗證。所以,我有一些關於 Windows 身份驗證的問題。我正在使用 Visual Studio 2012。

  • Windows 身份驗證如何工作?
  • 如何在 web.config 文件中正確實施 Windows 身份驗證?
  • 如何測試 Windows 身份驗證是否真的適用於我的 ASP.NET MVC 4 網站?換句話說,如何在我的本地開發 PC 上使用本地IIS(版本 8)和我公司的真實 Web 伺服器上使用 IIS 版本 7 進行測試?

我發現了一個對我非常有用的影片,它逐步展示瞭如何為 ASP.NET MVC 網站實現和測試 Windows 身份驗證。所以,我關閉這個問題。

來自非常友善的海報的影片:

如何在 ASP.NET MVC 3(模型視圖控制器)應用程序中實現 Windows 身份驗證?

對於 IIS 8.5 和 MVC 4:

Windows 身份驗證如何工作?

在這種模式下,User.Identity(如 中HttpContext.Current.User.Identity)由底層 Web 伺服器填充。這可能是@R Kumar 展示的連結中的 IIS Express,或者是 @Thomas Benz 的影片中的完整 IIS。

具體來說,User.Identity 是一個 WindowsIdentity 對象。例如,以下演員將起作用:

WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;

如何在 web.config 文件中正確實施 Windows 身份驗證?

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

如何測試 Windows 身份驗證是否真的適用於我的 ASP.NET MVC 4 網站?換句話說,如何在我的本地開發 PC 上使用本地 IIS(版本 8)和我公司的真實 Web 伺服器上使用 IIS 版本 7 進行測試?

首先,更改 ASP.NET 授權以排除目前使用者。例如

 <system.web>
   <authentication mode="Windows" />
   <authorization>
     <allow users="yourdomain\someotheruser" />
     <deny users="*" />
   </authorization>

其次,使用 IIS 管理器為您的站點啟用 Windows 身份驗證。它在“身份驗證”功能下。 禁用匿名身份驗證。

請注意,舊的解釋會建議您在站點的 web.config 元素下進行更改。但是,出於安全原因,最近的 IIS 實現阻止了這一點。

三、將瀏覽器指向網頁。瀏覽器應要求您提供憑據,因為目前使用者無權訪問該網站。提供那些為站點授權的,你的 MVC 程式碼應該執行。

四、核對使用者身份。例如

WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;

引用自:https://stackoverflow.com/questions/17224174