6

我試圖讓一個MVC5 web應用程序部分使用Windows身份驗證。歐文和Windows身份驗證(mvc5) - 使用Windows身份驗證作爲登錄的一部分

我的意思是,它實際上是基於表單/ cookie的身份驗證,但是請求用戶的Windows主體形成了其登錄憑證的部分

例如,登錄頁面會顯示「您已被識別爲somedomain \ kierenj。請輸入密碼登錄。」如果他們輸入了正確的代碼,則會設置Cookie並且他們已登錄。

如果Windows身份驗證失敗,那麼登錄頁面仍然會顯示,但被禁用。

我已經嘗試了這樣的WindowsPrincipalHanlder:https://github.com/JabbR/JabbR/blob/master/JabbR/Middleware/WindowsPrincipalHandler.cs

它的要點是,如果我啓用Windows身份驗證和禁用匿名身份驗證,然後Owin(或想必它的cookie認證部分)重定向到登錄頁面 - 重定向到登錄頁面 - 這是一個重定向循環。

注意我正在使用一個非常簡化的Owin設置。 UseCookieAuthenticationApplicationCookie類型和LoginPath指定;然後我打電話SignIn像這樣從我的帳戶控制:

 var claims = new[] { 
      new Claim(ClaimTypes.Name, "Username"), 
      new Claim(ClaimTypes.Role, "AuthenticatedUser") 
     }; 
     AuthenticationManager.SignIn(new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie)); 

(已經先檢查WindowsIdentity.GetCurrent()例如)

我真的需要寫我自己的Owin cookie認證中間件的版本?我可以獲取源代碼以便調試/派生嗎?

+0

是你永遠能夠找出一個答案,這個問題在控制器的構造函數? – Phil

+2

這是否 - https://github.com/MohammadYounes/MVC5-MixedAuth/tree/Update3 - 幫助? – Bringer128

回答

-2

爲了避免重定向循環,在服務登錄頁面上,請嘗試將當前HttpContext的Response.SuppressFormsAuthenticationRedirect到true

+0

這根本沒有幫助 – Phil