Zuul代理简单身份验证

时间:2018-06-23 11:07:07

标签: java spring spring-security netflix-zuul

我有一个简单的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吗?

1 个答案:

答案 0 :(得分:0)

我认为您在配置选项中询问的是敏感标题。默认情况下,sensitiveHeaders: Cookie,Set-Cookie,Authorization配置阻止标头Cookie,Set-Cookie,授权。可以覆盖它,但是您需要确保不会在Cookie下游泄漏敏感信息:

 zuul:
  routes:
    users:
      path: /myusers/**
      sensitiveHeaders:
      url: https://downstream

但是首先,您需要阅读Spring Cloud文档中为什么禁用它们:

  

您可以在同一系统中的服务之间共享标头,但是您可以   可能不希望敏感的标头泄漏到下游   外部服务器。您可以指定一个被忽略的标题列表作为   路由配置。 Cookies发挥了特殊作用,因为它们   在浏览器中具有明确定义的语义,并且它们始终是   视为敏感。如果代理的使用者是浏览器,则   下游服务的Cookie也会给用户带来麻烦,   因为它们都混杂在一起(所有下游服务看起来   就像他们来自同一个地方一样。)

http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_cookies_and_sensitive_headers