2017-07-20 30 views
0

如何爲不同環境設置redirectUri?在我的開發環境,我想回到OpenIdConnectAuthenticationOptions azure Active Directory爲不同環境設置RedirectUri

https://localhost/

,並在我的部署蔚藍的版本我想回到

https://appname.portal.p.azurewebsites.net/

在我startup.auth.cs文件我有這個

#if DEBUG 
             RedirectUri = "https://localhost/", 
       #else 
            RedirectUri = "https://appname.portal.p.azurewebsites.net/", 
            #endif 

如果我在發佈模式下運行它不會工作,我輸入我的用戶名和密碼,我得到

錯誤的請求 - 要求太龍

HTTP 400錯誤的請求頭的大小是太長。

,但它在調試我的本地機器

回答

0

重定向基於當前HTTP地址Web應用程序上,我們可以使用RedirectToIdentityProvider像下面的代碼:

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions 
    { 
     ClientId = clientId, 
     Authority = authority, 

     Notifications = new OpenIdConnectAuthenticationNotifications 
     { 
      AuthenticationFailed = context => 
      { 
       context.HandleResponse(); 
       context.Response.Redirect("/Error?message=" + context.Exception.Message); 
       return Task.FromResult(0); 
      },   
      RedirectToIdentityProvider = context => 
       { 
        string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase; 
        string currentUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.Path; 
        context.ProtocolMessage.RedirectUri = currentUrl; 
        context.ProtocolMessage.PostLogoutRedirectUri = appBaseUrl; 
        return Task.FromResult(0); 
       } 
     }  
    });