ASP.NET MVC 4 的 Windows 身份驗證 - 它是如何工作的,如何測試它
我以前從未對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 身份驗證。所以,我關閉這個問題。
來自非常友善的海報的影片:
對於 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;