簡體   English   中英

Zuul代理簡單身份驗證

[英]Zuul proxy simple auth

我有一個簡單的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/

本地主機:8081具有基本身份驗證,類似

localhost:8081/j_spring_security_check?j_username=user&j_password=pass

返回帶有JSESSIONID的cookie並通過將此JSESSIONID設置為標頭可以獲取資源。 我不能更改localhost:8081,因為它不是我的服務。 如何獲得此JSESSIONID並設置為zuul? 我可以只使用yml嗎?

我認為您在配置選項中詢問的是敏感標題。 默認情況下, sensitiveHeaders: Cookie,Set-Cookie,Authorization阻止標頭Cookie,Set-Cookie,授權sensitiveHeaders: Cookie,Set-Cookie,Authorization配置。 可以覆蓋它,但是您需要確保不會在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM