SpringCloud Cookie和敏感標題

2023-11-23 11:40 更新

您可以在同一系統(tǒng)中的服務之間共享標頭,但您可能不希望敏感標頭泄漏到下游到外部服務器中。您可以在路由配置中指定忽略的標頭列表。Cookies發(fā)揮著特殊的作用,因為它們在瀏覽器中具有定義明確的語義,并且始終將它們視為敏感內(nèi)容。如果代理的使用者是瀏覽器,那么下游服務的cookie也會給用戶帶來麻煩,因為它們都混雜在一起(所有下游服務看起來都來自同一位置)。

如果您對服務的設計很謹慎(例如,如果只有一個下游服務設置cookie),則可以讓它們從后端一直流到調(diào)用者。另外,如果您的代理設置了cookie,并且您的所有后端服務都在同一系統(tǒng)中,則很自然地簡單地共享它們(例如,使用Spring Session將它們鏈接到某些共享狀態(tài))。除此之外,由下游服務設置的任何cookie可能對調(diào)用者都無用,因此建議您將(至少)Set-CookieCookie設置為敏感的標頭,用于那些沒有使用的路由您網(wǎng)域的一部分。即使對于屬于您網(wǎng)域的路由,在讓Cookie在它們和代理之間流動之前,也應仔細考慮其含義。

可以將敏感頭配置為每個路由的逗號分隔列表,如以下示例所示:

application.yml。 

 zuul:
  routes:
    users:
      path: /myusers/**
      sensitiveHeaders: Cookie,Set-Cookie,Authorization
      url: https://downstream

 這是sensitiveHeaders的默認值,因此除非您希望其與眾不同,否則無需進行設置。這是Spring Cloud Netflix 1.1中的新功能(在1.0中,用戶無法控制標題,并且所有cookie都雙向流動)。

sensitiveHeaders是黑名單,默認值不為空。因此,要使Zuul發(fā)送所有標頭(ignored除外),必須將其顯式設置為空列表。如果要將Cookie或授權標頭傳遞到后端,則必須這樣做。以下示例顯示如何使用sensitiveHeaders

application.yml。 

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

您還可以通過設置zuul.sensitiveHeaders來設置敏感標題。如果在路由上設置了sensitiveHeaders,它將覆蓋全局sensitiveHeaders設置。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號