2014-07-23 362 views
5

我使用Visual Studio 2013和Owin Middleware提供的默認訪問控制創建了一個新的ASP.NET MVC 5應用程序。OWIN身份驗證與IIS基本身份驗證

我啓用了IIS上的基本身份驗證(禁用所有其他身份驗證),以保護沒有我在Windows上創建的用戶/密碼的用戶的網站。這導致在瀏覽器中的「重定向循環」。

爲什麼呢?我怎樣才能保護網站,無需更改代碼的任何想法?

回答

5

默認文件Startup.Auth.cs,會有一些像這樣:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/Main/Account/Login"), 
       CookieName = "OwinAuthCookie", 
      }); 

當啓用了基本身份驗證在IIS中,這裏發生了什麼:

  1. IIS基本身份驗證模塊認爲沒有認證頭,所以它返回一個HTTP 401 Response
  2. 立即回覆不會立即返回,但由Owin處理。
  3. Owin看到請求得到了401 (Unauthorized) Response,所以它重定向到配置的LoginPath
  4. 您的瀏覽器處理重定向,嘗試打開新的URL,我們又回到了第1點。並且是循環。

你可以做的是註釋掉上面代碼中的LoginPath屬性。這應該停止重定向循環,但也可以(但不必根據您的實現)中斷應用程序用戶的身份驗證。

我最終得到的結果是實現一個小的Owin中間件,並自己進行基本認證。

這些鏈接可能會有所幫助:

+0

我這樣做了。我創建了一個頁面來授權用戶並禁用基本認證。 – Fabio