OpenIdConnectAuthenticationOptions azure活动目录为不同环境设置RedirectUri

时间:2017-07-20 13:55:26

标签: c# azure openid-connect

如何为不同的环境设置redirectUri?在我的开发环境中,我想返回

https://localhost/

在我部署的azure版本中,我想返回

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.请求标头的大小太长。

但它可以在我的本地计算机上进行调试

1 个答案:

答案 0 :(得分:0)

要根据当前的HTTP地址重定向网络应用,我们可以使用下面的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);
              }
        }    
    });