Netflix Zuul 未通过 .Net Core 3.1 Web 应用程序的关联 Cookie - Identity Server 4 和 Nginx
Netflix Zuul Not Passing Through Correlation Cookie for .Net Core 3.1 Web App - Identity Server 4 and Nginx
我有一个基本的 .Net Core 3.1 mvc
Web 应用程序,它使用混合流和 Identity Server 4(基于他们的快速入门)。后者位于 nginx
之后,网络应用位于 nginx
和 zuul
之后。当我单击 Web 应用程序中的登录按钮时,我被重定向到 Identity Server 的登录页面。登录后,oidc
重定向失败,在我的 Web 应用程序日志中,我有一个相关 ID cookie 错误,表明它已丢失。
然后我所做的就是将 Web 应用程序直接放在 nginx
后面,就像 Identity Server,并且一切都按预期使用 oidc
登录和注销重定向。
这是我在 application.properties
中的 zuul
配置
zuul.sensitive-headers=Cookie,Set-Cookie
zuul.ignored-services= '*'
zuul.add-host-header=true
server.port=9002
spring.application.name=zuul
eureka.instance.preferIpAddress=true
eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://localhost:9001/eureka}
zuul.strip-prefix=false
eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
在此配置中我可能还需要其他东西来解决我的问题吗?
我的 nginx
配置为转发 Web 应用程序所有必需的 headers,但是当从 zuul
.[=23 代理时,下游可能会丢失某些东西=]
location / {
proxy_pass http://zuul:9002/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
}
这一切都是使用 Docker 个容器完成的。
最后这是一个非常简单的修复,因为我最初误解了 zuul
文档。我在上面所做的确实是将 cookie 列入黑名单:
zuul.sensitive-headers=Cookie,Set-Cookie
看来 zuul
黑名单 Cookie,Set-Cookie,Authorisation
开箱即用。一旦我将 属性 设置为空字符串或随机字符串名称,一切都会按预期进行。
我有一个基本的 .Net Core 3.1 mvc
Web 应用程序,它使用混合流和 Identity Server 4(基于他们的快速入门)。后者位于 nginx
之后,网络应用位于 nginx
和 zuul
之后。当我单击 Web 应用程序中的登录按钮时,我被重定向到 Identity Server 的登录页面。登录后,oidc
重定向失败,在我的 Web 应用程序日志中,我有一个相关 ID cookie 错误,表明它已丢失。
然后我所做的就是将 Web 应用程序直接放在 nginx
后面,就像 Identity Server,并且一切都按预期使用 oidc
登录和注销重定向。
这是我在 application.properties
zuul
配置
zuul.sensitive-headers=Cookie,Set-Cookie
zuul.ignored-services= '*'
zuul.add-host-header=true
server.port=9002
spring.application.name=zuul
eureka.instance.preferIpAddress=true
eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://localhost:9001/eureka}
zuul.strip-prefix=false
eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
在此配置中我可能还需要其他东西来解决我的问题吗?
我的 nginx
配置为转发 Web 应用程序所有必需的 headers,但是当从 zuul
.[=23 代理时,下游可能会丢失某些东西=]
location / {
proxy_pass http://zuul:9002/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
}
这一切都是使用 Docker 个容器完成的。
最后这是一个非常简单的修复,因为我最初误解了 zuul
文档。我在上面所做的确实是将 cookie 列入黑名单:
zuul.sensitive-headers=Cookie,Set-Cookie
看来 zuul
黑名单 Cookie,Set-Cookie,Authorisation
开箱即用。一旦我将 属性 设置为空字符串或随机字符串名称,一切都会按预期进行。