2013-06-20 47 views
30

我以前從未使用過Windows身份驗證的ASP.NET MVC Web應用程序,但Forms Authentication。最近,我有一個ASP.NET MVC 4 Web應用程序,它需要授權用戶登錄我的公司Web服務器的用戶使用Windows身份驗證實現。所以,我有一些關於Windows身份驗證的問題。我使用Visual Studio的  2012年 ASP.NET MVC 4的Windows身份驗證 - 它是如何工作的,如何測試它

  • 如何Windows身份驗證工作?

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

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

+0

這不應該與在Web窗體應用程序中測試它不同。 – Jacob

+0

@jacob,謝謝你的回覆。你能給我更多的細節嗎? –

+0

如果您使用IIS Express在本地運行,您可能還需要查看該帖子。 http://stackoverflow.com/questions/4762538/iis-express-windows-authentication – thinklarge

回答

9

我已經在ASP.NET MVC 1.0中完成了這項工作。那是相當長的一段時間。我記得IIS設置令人困惑。我只是做了一些檢查,看起來ASP.NET MVC 4.0的東西看起來並沒有太大改變,就控制器的屬性而言。

對於您的問題:

  1. 它是如何工作的?下面的參考文獻幾乎總結了很好。 Authenticating Users with Windows Authentication (C#) 對於ASP.NET MVC 4.0並不完全正確,但它有一些背景。

    How to Create an Intranet Site Using ASP.NET MVC適用於ASP.NET MVC 3.0。

    我太新張貼超過兩個環節多,所以你將不得不尋找MSDN爲「AuthorizeAttribute一流」爲.NET框架4

  2. 的web.config中哪些設置? - 我只記得改變一個元素,「認證模式」。

  3. 就測試而言,我的Windows操作系統版本匹配得更好,而且我的開發機器位於同一個Windows域中。但如果我沒有記錯,這只是工作。 YMMV,但我記得考慮的一件事是實施我自己的授權。也許這是你的情況的一個途徑,推出你自己的,然後切換到生產中的Windows身份驗證。但是,如果您可以在公司域上設置一個測試服務器,我會建議您使用測試服務器進行幾次測試迭代。

+0

非常感謝你的客氣話和幫助。我發現了一個對我有用的在線視頻(見下文),他的視頻適合我。所以,我關閉了這個線程。 –

27

對於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網站?換句話說,我如何在本地IIS(版本8)的本地開發PC上以及使用IIS版本7的公司真實Web服務器上對其進行測試?

首先,更改ASP.NET授權以排除當前用戶。例如。

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

其次,啓用Windows身份驗證使用IIS管理您的網站。它在'認證'功能下。 禁用匿名身份驗證。

請注意,以前的解釋會建議您在網站的web.config元素下進行更改。但是,由於安全原因,最近的IIS實現阻止了此操作

三,將瀏覽器指向網頁。瀏覽器應該要求您提供憑據,因爲當前用戶不允許訪問該網站。提供已授權的網站,並且您的MVC代碼應該運行。

四,檢查用戶身份。例如。

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

對於任何閱讀此內容的人,請不要使用''標籤來保證生產安全,[正確鎖定路徑](http://stackoverflow.com/questions/11765030/how-to-lock-down-paths -in-ASP淨MVC)。 –