编辑:更详细的说明
我们有以下设置:
NGINX反向代理设置为进行SSL卸载。所有内部通信都通过HTTP进行。重定向的设置如下:
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Original-For $proxy_add_x_forwarded_for; proxy_set_header X-Original-Proto $scheme; proxy_cache_bypass $http_upgrade;
IS4在app.UseIdentityServer之前有以下设置
var fordwardedHeaderOptions = new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }; fordwardedHeaderOptions.KnownNetworks.Clear(); fordwardedHeaderOptions.KnownProxies.Clear(); app.UseForwardedHeaders(fordwardedHeaderOptions);
客户端上将RequireHttpsMetadata设置为FALSE
在IS4侧,所有客户端都配置了HTTPS地址的“RedirectUris”和“PostLogoutRedirectUris”。
在客户端侧,IdentityServerAuthenticationOptions的配置如下:
new IdentityServerAuthenticationOptions { Authority = "https://[OAUTH_ADDRESS]", ApiName = "[API_NAME]", ApiSecret = "[API_SECRET]", RequireHttpsMetadata = false }
实际发生的情况是,当我们尝试访问IS4 Clients中注册的一个客户端,并且请求被重定向到IS4进行身份验证时,我们遇到了“未经授权的客户端”消息屏幕。此外,在检查重定向请求的查询字符串之后,我们可以看到返回的URL是HTTP而不是HTTPS。
请提供建议。