我有一个简单的Spring Boot应用程序,该应用程序使用zuul代理来代理一些api
@EnableZuulProxy
@SpringBootApplication
public class DemoClientApplication {
public static void main(String[] args) {
SpringApplication.run(DemoClientApplication.class, args);
}
}
application.yml
server:
port: 8080
zuul:
routes:
test:
path: /api/**
url: http://localhost:8081/api/
localhost:8081具有基本身份验证,类似于
localhost:8081/j_spring_security_check?j_username=user&j_password=pass
返回带有JSESSIONID的cookie并通过将此JSESSIONID设置为标头可以获取资源。我不能更改localhost:8081,因为它不是我的服务。如何获得此JSESSIONID并设置为zuul?我可以只使用yml吗?
答案 0 :(得分:0)
我认为您在配置选项中询问的是敏感标题。默认情况下,sensitiveHeaders: Cookie,Set-Cookie,Authorization
配置阻止标头Cookie,Set-Cookie,授权。可以覆盖它,但是您需要确保不会在Cookie下游泄漏敏感信息:
zuul:
routes:
users:
path: /myusers/**
sensitiveHeaders:
url: https://downstream
但是首先,您需要阅读Spring Cloud文档中为什么禁用它们:
您可以在同一系统中的服务之间共享标头,但是您可以 可能不希望敏感的标头泄漏到下游 外部服务器。您可以指定一个被忽略的标题列表作为 路由配置。 Cookies发挥了特殊作用,因为它们 在浏览器中具有明确定义的语义,并且它们始终是 视为敏感。如果代理的使用者是浏览器,则 下游服务的Cookie也会给用户带来麻烦, 因为它们都混杂在一起(所有下游服务看起来 就像他们来自同一个地方一样。)