簡體   English   中英

Spring Cloud Security JWT:使用配置服務器/密鑰輪換分發公鑰

[英]Spring Cloud Security JWT: Distribute Public Key using Config Server / Key Rotation

如何在Spring Cloud環境中管理用於簽署/驗證JWT的私鑰/公鑰?

問題”:

目前我生成一個密鑰對。 然后將Private + Public Key復制到我的auth-server應用程序。 並將公鑰復制到每個資源服務器。

當我現在想要實現“密鑰輪換”時,我必須以某種方式為每個服務填充新密鑰。


想法:

也許我可以使用spring-cloud-config-server存儲和分發Key Pairs?

配置服務器已提供數據庫登錄憑據。 那么為什么不在那里存儲更敏感的信息呢?


問題(S):

如果這是要走的路:你如何使用spring-cloud-config-server實現密鑰對分發?

你有任何安全問題嗎?

你是怎么解決這個問題的? 我想有更好的解決方案。


編輯:

也許有一些解決方案使用Spring Oauth的JWKs的security.oauth2.resource.jwt.keyUri屬性?

首先,我會有一個隱藏JWT機制的網關。 它允許您從網關撤消令牌。 如果用戶知道他的令牌,則不能在不撤銷公鑰的情況下撤銷該令牌。 它看起來像這樣:

在此輸入圖像描述

使用zuul的過濾器和會話范圍的bean很容易實現。

其次,如果你在評論中說過,你可以簡單地創建一個新的私鑰來生成新的令牌。 但是所有資源服務器必須能夠讀取以前生成的所有令牌。 因此,您需要在每個資源服務器上都有一個公鑰列表,每次收到請求時,都必須嘗試使用​​每個公鑰進行驗證。 也許你可以擁有一個公鑰ID(並將id放在每個生成的令牌上),以避免對這個任務進行愚蠢的查找。

對於密鑰分發,使用spring cloud總線和rabbit mq似乎對我來說。

您應該考慮使用Spring Cloud Consul Config

Consul提供用於存儲配置和其他元數據的鍵/值存儲。 Spring Cloud Consul Config是Config Server和Client的替代方案。 在特殊的“bootstrap”階段,配置被加載到Spring環境中。 配置默認存儲在/ config文件夾中。 基於應用程序的名稱和模擬Spring Cloud Config解析屬性順序的活動配置文件創建多個PropertySource實例。

您可以POST /刷新以更新密鑰,或者監視更改

Consul Config Watch利用領事的能力來觀看密鑰前綴。 Config Watch進行阻塞Consul HTTP API調用,以確定當前應用程序是否有任何相關配置數據已更改。 如果有新配置數據,則發布刷新事件。

暫無
暫無

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

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