Tim*_*Tim 8 java spring-security-oauth2 spring-cloud spring-cloud-netflix
从Spring Cloud切换Brixton.M5到Brixton.RC1我的ZuulProxy时,不再将Authorization标头下游传递给我的代理服务.
在我的设置中有各种各样的演员,但大多数都非常简单: - AuthorizationServer:单独运行; 向客户发放JWT - 客户:从OAuth服务器获取JWT; 每个人都可以访问一部分资源. - ResourceServers:使用JWT进行访问决策 - MyZuulProxy:代理各种资源服务器; 应该转发JWT.
应该注意的是,MyZuulProxy没有任何安全依赖性; 它将Authorization: Bearer {JWT}它收到的头传递给ResourceServers,前RC1.MyZuulProxy显然不是客户端本身,目前不使用@EnableOAuth2SSO或类似.
在使用Spring Cloud Brixton.RC1时,如何让MyZuulProxy再次将JWT中继到ResourceServers?
有很少的代码后:这只是@EnableZuulProxy,@EnableAuthorizationServer并@EnableResourceServer在三个不同的罐子.我的客户端不是Spring应用程序.
Tim*_*Tim 20
更新:已在https://github.com/spring-cloud/spring-cloud-netflix/pull/963/files中修复
敏感标题也可以设置为全局设置
zuul.sensitiveHeaders.如果sensitiveHeaders在路线上设置,则将覆盖全局sensitiveHeaders设置.
所以使用:
# Pass Authorization header downstream
zuul:
sensitiveHeaders: Cookie,Set-Cookie
Run Code Online (Sandbox Code Playgroud)
因此,在修复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;
}
}
Run Code Online (Sandbox Code Playgroud)
Abh*_*ash 10
全局设置sensitiveHeaders帮我解决了这个问题
zuul:
sensitiveHeaders: Cookie,Set-Cookie
Run Code Online (Sandbox Code Playgroud)
请注意,属性名称是sensitiveHeaders not sensitive-headers [我使用spring-cloud-starter-zuul version:1.3.1.RELEASE]
| 归档时间: |
|
| 查看次数: |
8541 次 |
| 最近记录: |