【问题标题】:Deploying IdentityServer4 behind reverse proxy在反向代理后面部署 IdentityServer4
【发布时间】:2017-12-02 23:33:48
【问题描述】:

我们正在尝试在反向代理后面部署 IdentityServer4。发现文档返回本地 url,例如

https://xxx.local/connect/token

我们需要的地方

https://xxx.domain.com/connect/token

IdentityServer docs 将我们指向this github 页面。但是,当我们按照描述配置中间件时,我们看不到任何变化。

var options = new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
};
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
app.UseForwardedHeaders(options);

this github 页面上可以找到类似的设置。提出的解决方案使用 nginx,所以我们的 iis 配置可能是关闭的。

在 IIS 中用于代理:

<serverVariables>
     <set name="HTTP_X_ORIGINAL_REMOTE_ADDR" value="{REMOTE_ADDR}" />
     <set name="HTTP_X_FORWARDED_PROTO" value="https" />
</serverVariables>

任何帮助将不胜感激。

【问题讨论】:

  • 仅供参考:默认情况下,发现文档中的 URL 取决于请求 URL。要更改此行为,请查看我的回答 stackoverflow.com/a/44483624/5112433 的“发行人验证”部分。
  • 我试过这个。它改变了响应中的“发行者”,但其余的 url 仍然是本地的。
  • 我们有同样的问题。
  • @chrisdrobison 我们实际上设法通过禁用代理上的“在响应标头中反向重写主机”来解决此问题。你可能想试试。
  • @RickyStam 我们让代理转发所有标头,并一直启用 SSL 到托管 Web 服务器。这似乎奏效了。但是,我今天遇到了这个:amilspage.com/set-identityserver4-url-behind-loadbalancer。这种方式更简单,更可配置。他们刚刚发布了 v2,这使得所有这一切都成为一个争论点,因为您现在可以像在 idsrv3 中一样配置公共来源。

标签: c# iis asp.net-core reverse-proxy identityserver4


【解决方案1】:

在 IDS 内部启动 IDS 尝试以下代码

var builder = services.AddIdentityServer(options =>
        {
            ...


            options.PublicOrigin = "https://domainName.com";// <= try adding this!

           ...




        })

这将强制您的发现端点成为您的公共 IP。让我知道这是否有效。我

【讨论】:

  • 当我们使用外部身份验证提供程序时,您的孤独回答帮助我们成功地为我们的私有 IdP 服务器设置了正确的 RedirectUri,谢谢!
【解决方案2】:

2020 年更新(IdentityServer4 v4.x):PublicOrigin 属性已删除。

见:https://github.com/IdentityServer/IdentityServer4/issues/4535

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2019-07-04
    • 2010-11-07
    • 2010-11-09
    • 2020-11-11
    相关资源
    最近更新 更多