【问题标题】:Reverse proxy with openid connect redirection使用 openid 连接重定向的反向代理
【发布时间】:2017-12-07 14:32:32
【问题描述】:

在我的应用程序中,我已将Identity server 3openid-connect 集成在一起。 在我们的生产服务器上,我们的网站位于导致问题的反向代理后面;

当用户登录并被身份服务器重定向回来时,我们的应用程序希望将用户重定向到他的原始位置(带有AuthorizeAttribute 的页面)。 这里的问题是用户被重定向到隐藏的url而不是reverse proxy使用的公共url。

如何将用户重定向到公共 url?

【问题讨论】:

    标签: c# asp.net-mvc reverse-proxy identityserver3 openid-connect


    【解决方案1】:

    经过长时间的搜索,这是修复:

    OWIN 中间件 UseOpenIdConnectAuthenticationOptions 属性中具有属性 Notifications。 这个Notifications 属性有一个func SecurityTokenValidated。在此函数中,您可以修改重定向 Uri。

    app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    {
        Authority = "https://idp.io",
        ClientId = "clientid",
        RedirectUri = "https://mywebsite.io",
        ResponseType = "code id_token token",
        Scope = "openid profile",
        SignInAsAuthenticationType = "Cookies",
        UseTokenLifetime = false,
        Notifications = new OpenIdConnectAuthenticationNotifications
        {
            SecurityTokenValidated = notification =>
            {
                notification.AuthenticationTicket.Properties.RedirectUri = RewriteToPublicOrigin(notification.AuthenticationTicket.Properties.RedirectUri);
                return Task.CompletedTask;
            }
        }
    });
    

    这是将 url 重写为公共来源的函数:

    private static string RewriteToPublicOrigin(string originalUrl)
    {
        var publicOrigin = ConfigurationManager.AppSettings["app:identityServer.PublicOrigin"];
        if (!string.IsNullOrEmpty(publicOrigin))
        {
            var uriBuilder = new UriBuilder(originalUrl);
            var publicOriginUri = new Uri(publicOrigin);
            uriBuilder.Host = publicOriginUri.Host;
            uriBuilder.Scheme = publicOriginUri.Scheme;
            uriBuilder.Port = publicOriginUri.Port;
            var newUrl = uriBuilder.Uri.AbsoluteUri;
    
            return newUrl;
        }
    
        return originalUrl;
    }
    

    现在OpenIdConnect 将用户重定向到公共 url 而不是非公共网络服务器 url。

    【讨论】:

      猜你喜欢
      • 2011-07-13
      • 2012-06-03
      • 2020-05-12
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2019-03-12
      • 2015-11-29
      • 1970-01-01
      相关资源
      最近更新 更多