簡體   English   中英

Spring OAuth2客戶端未發送授權標頭

[英]Spring oauth2 client not sending Authorization header

我有2個微服務。 1是作為在端口8000上運行的oauth2服務器的Spring boot 2項目設置,另一個是在端口8001上運行的Spring boot 2項目oauth2客戶端。

我已經安裝了oauth服務器,可以確認它是否正常運行,因為使用客戶端ID和密碼登錄時會收到令牌。 我使用Postman在/ oauth / token上發布了帖子,我可以看到其中的內容。 我看到了訪問令牌和刷新令牌。

然后,我使用Postman調用另一個微服務,該另一個微服務是作為oauth2客戶端的Spring引導項目設置。 我使用Postman作為oauth2授權來設置訪問令牌,並且可以看到將Authorization: Bearer TOKEN添加到了標題中。 然后,我調用oauth2客戶端,並在其中調用以下端點:

@GetMapping("/api/user/test")
@PreAuthorize("isAuthenticated()")
public MyObject doTest() {
    return new String("Test");
}

當我調用該URL時,我可以確定spring向oauth服務器發送了一個請求以獲取當前用戶。 在我的application.yml中,我有以下內容,以便spring知道oauth服務器在哪里:

security:
  oauth2:
    resource:
      user-info-uri: http://localhost:8000/oauth/user

到現在為止還挺好。 現在這是事情。 我調試了http://localhost:8000/oauth/user url並且根據spring,主體為​​null。 我發現問題出在哪里。 我的配置錯誤或在Spring中存在一個巨大的錯誤,因為當我向oauth2服務器添加過濾器並打印所有標頭時,這就是我看到的:

Header: application/json Header: Java/1.8.0_181 Header: localhost:8000 Header: http Header: 8000 Header: 172.20.0.1 Header: gzip Header: 0 Header: 192.168.178.153:9001 Header: Keep-Alive

如您所見,沒有授權頭。 顯然,在調用user-info-uri時,spring oauth2客戶端沒有發送Authorization標頭。 有人可以幫忙嗎?

我需要知道如何配置spring boot oauth2客戶端,以便每個需要身份驗證的URL都將調用某個URL以獲取當前用戶。

在此先感謝Martijn

我找到了解決方案。 它通過zull代理進行連接,默認情況下zuul代理會過濾掉Authorization標頭。 將此添加到zuul配置中,它將起作用: zuul.sensitiveHeaders: Cookie,Set-Cookie

暫無
暫無

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

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