gpt4 book ai didi

java - ZuulProxy 未通过以 Brixton.RC1 开头的授权 header

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:44 30 4
gpt4 key购买 nike

在从 Spring Cloud Brixton.M5 切换到 Brixton.RC1 时,我的 ZuulProxy 不再将 Authorization header 下游传递到我的代理服务。

在我的设置中有各种角色在起作用,但大多数都相当简单:- AuthorizationServer:单独运行;将 JWT 分发给客户- 客户端:从 OAuth 服务器获取 JWT;每个人都可以访问一部分资源。- ResourceServers:使用 JWT 进行访问决策- MyZuulProxy:代理各种资源服务器;应该中继 JWT。

需要注意的是,MyZuulProxy 没有任何安全依赖;它将接收到的 Authorization: Bearer {JWT} header 传递给 RC1 之前的 ResourceServers。 MyZuulProxy 本身显然不是客户端,目前不使用 @EnableOAuth2SSO 或类似的东西。

在使用 Spring Cloud Brixton.RC1 时,我该怎么做才能让 MyZuulProxy 再次将 JWT 中继到 ResourceServers?

要发布的代码非常少:只有 @EnableZuulProxy@EnableAuthorizationServer@EnableResourceServer 在三个不同的 jar 中。我的客户不是 Spring 应用程序。

最佳答案

更新:已在 https://github.com/spring-cloud/spring-cloud-netflix/pull/963/files 中修复

Sensitive headers can also be set globally setting zuul.sensitiveHeaders. If sensitiveHeaders is set on a route, this will override the global sensitiveHeaders setting.

所以使用:

# Pass Authorization header downstream
zuul:
sensitiveHeaders: Cookie,Set-Cookie

因此等待修复 https://github.com/spring-cloud/spring-cloud-netflix/issues/944 , jebeaudet很友好地提供了一个解决方法:

@Component
public class RelayTokenFilter extends ZuulFilter {

@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();

// Alter ignored headers as per: https://gitter.im/spring-cloud/spring-cloud?at=56fea31f11ea211749c3ed22
Set<String> headers = (Set<String>) ctx.get("ignoredHeaders");
// We need our JWT tokens relayed to resource servers
headers.remove("authorization");

return null;
}

@Override
public boolean shouldFilter() {
return true;
}

@Override
public String filterType() {
return "pre";
}

@Override
public int filterOrder() {
return 10000;
}
}

关于java - ZuulProxy 未通过以 Brixton.RC1 开头的授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36359915/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com