2016-12-15 73 views
2

我們正在構建基於微服務的體系結構中的應用程序來實現我們的應用程序。與微服務一樣,我們現在看到服務之間發生了很多交叉服務交互。我的基於微服務的體系結構的中央JWT管理系統

爲了保護端點,我們計劃在這些安全交換之間實施基於JWT的認證。

有我們看到幫助我們實現這一目標的方法2:

  1. 嵌入一個智威湯遜發動機的每個應用程序生成令牌(@consumer側)和評估(@provider側)。通過初始密鑰交換,令牌交換對於任何未來的通信都將平穩運行。
  2. 有一個外部(應用程序)JWT引擎,位於分佈式應用程序的所有微服務通信之間,並負責所有令牌生命週期,包括其加密解密和驗證。

有很多選擇做按選項#1上市https://jwt.io但考慮到過頭令牌生成和管理增加了一個微型的服務,我們更喜歡通過其德與第二選擇去中央網關。

頗有些研究,尋找不同的API網關後,我們還沒有遇到一個重量輕的解決方案/工具,它可以成爲我們的需求,並幫助我們集中發動機由許多微服務一個應用。

有誰知道一個這樣的工具/解決方案?

如果您對此方法有任何其他意見,請告訴我。

回答

1

我也比較喜歡選項2,但你爲什麼要尋找一個框架?

中央應用程序只應負責管理私鑰和發放令牌。包括解決一個服務的框架可能過多

您也可以考慮實施驗證服務,但由於應用程序是您的,因此我建議使用不對稱密鑰並在本地驗證令牌,而不是執行遠程驗證請求至中央應用。您可以爲微服務提供一個簡單的庫來下載密鑰並執行驗證。嵌入任何JWT.io的庫或從頭開始構建它。驗證JWT非常簡單

如果您需要在到期時間之前拒絕令牌,例如使用黑名單,那麼將需要一箇中央服務。但我不推薦這種方案,因爲休息JWT無狀態

+0

喜歡你的建議@pedrofb。 –

0
+0

我已經探索Zuul作爲此搜索的一部分,我不確定Zuul是否真的能夠生成/管理和驗證通過它連接的應用程序的JWT令牌。 Zuul文檔中沒有提供關於提供JWT支持的證據。它有一個令牌中繼系統,但這不是JWT令牌。 –

+0

事實上,每個通過Zuul的微服務都使用相同的clientId(如ZuulProxy設置中指定的那樣)。而我們想要爲每個內部微服務調用「交換」唯一的令牌。我也不希望我的端點解密和驗證令牌。在收到令牌後,它應該將該塊卸載回JWT引擎。如果您有使用Zuul的示例/示例來滿足這種需求,您會介意分享嗎? –