1

如果我指定我OpenIdConnectAuthenticationOptions重定向URI像這樣無限重定向循環重定向

app.UseOpenIdConnectAuthentication(
      new OpenIdConnectAuthenticationOptions 
      { 
       ClientId = clientId, 
       Authority = Authority, 
       PostLogoutRedirectUri = postLogoutRedirectUri, 
       RedirectUri = redirectUri, 

       Notifications = new OpenIdConnectAuthenticationNotifications() 
       { 
        AuthenticationFailed = context => 
        { 
         context.HandleResponse(); 
         context.Response.Redirect("/Error?message=" + context.Exception.Message); 
         return Task.FromResult(0); 
        } 
       } 
      }); 

然後我得到一個無限重定向循環。這隻發生在我把它放在獨立的IIS服務器(我們的測試服務器)上。如果我刪除了AAD中的所有重播網址,並且只保留了測試服務器的設置,並從上面刪除了「RedirectUri = redirectUri」,我的問題就消失了。

我這裏有一個小提琴手日誌:https://drive.google.com/file/d/0B5Ap95E_wdyAa0RLLWloZ0dCaGM/view?usp=sharing

看來,當從AAD要求回來我的應用程序,該令牌抓住和使用前,中間件只是反彈是正確的背部採用了302。另外可能很重要的是,我擁有路由和返回uri指向的mvc控制器上的[Authorize]屬性。如果我刪除它,我不會得到這個問題。

[更新] 我試着將應用程序移動到IIS的本地主機安裝,而不是使用iisexpress,這樣我就可以像安裝在我的iis服務器上那樣安裝一個子應用程序。在我的本地主機上,它執行相同的無限循環。我在一些遙測自定義事件中添加了[Authorize]屬性,並且已經能夠發現在認證後將頁面重定向迴應用httpContext.user.identity.IsAuthenticated = false。那麼OWIN中間件不知道如何設置它爲真?

感謝您的幫助!

+0

我嘗試重現您的問題但失敗了,您能否提供更多詳細信息以幫助我們重現該問題:如果未指定任何RedirectUri參數值,則該參數將被省略,Azure AD將選擇在註冊時註冊的參數時間 。 –

+0

@ NanYu-MSFT感謝您的評論。我忘了補充說,這個應用程序是作爲iis主要網站的一個子應用程序安裝的,因此是「mainsite.com/thisApp」。當它在本地運行時,它會作爲獨立應用運行,並且我不會收到重新直接的錯誤。你認爲這可能是問題的一部分嗎?另外,註冊的第一個uri是本地主機版本,然後我手動將我的測試服務器url路徑添加到第二個回覆URL到AAD中。這些幫助有用? – Mike

+0

@ NanYu-MSFT我能夠做更多的測試並發現了一些更多的細節(見上)主要是,雖然IsAuthenticated屬性在身份驗證後設置爲false,但它回到了應用程序中,但我不明白爲什麼當它完美地在我的本地! – Mike

回答

1

我能找到我的問題的解決方案。最初我指定我的回覆網址指向網站的根目錄。我的路由配置看起來像這樣:

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Welcome", action = "Index", id = UrlParameter.Optional } 
     ); 

如果我追加「歡迎」到我的回覆url的結尾它的作品。由於某種原因,如果我將回復網址留在網站的根目錄下,並且收到默認路由,則會進入無限循環。

我也發現這隻適用於網站的子應用程序。我嘗試將我的應用程序移到iis中作爲獨立站點,而不是在回覆url中添加控制器名稱。

例子:
回覆原文網址: mysite.mydomain.com/CustomApp

新回覆網址: mysite.mydomain.com/CustomApp/Welcome

希望別人能找到這個有用!

+0

我發現問題的根源仍然是由此mvc5錯誤引起的:https://katanaproject.codeplex.com/workitem/197。我認爲它已被修復,但沒有,所以我會繼續使用着名的Kentor Owin Cookie Saver:https://github.com/Sustainsys/owin-cookie-saver – Mike