【发布时间】: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