2

我正在研究使用微服務體系結構實現的應用程序。有一種使用jwt標準的認證服務(A),並且在應用程序中還有其他服務,如S1,S2,S3等。 現在例如S1接收到一個請求,它應該驗證令牌以查看用戶是否被授權。該驗證可以通過以下步驟實現:驗證微服務體系結構的每項服務中的訪問令牌

  • 發送所述令牌從S1到A,則A驗證令牌並將結果發送到S1(這是一種開銷)
  • 驗證內部S1令牌(其是每個服務內部的重複動作,還需要每個服務內部的密鑰或公鑰/私鑰,用於簽名/驗證)

我不是在問這些方法是如何工作的。問題是,哪一個更好?或者這種情況下的最佳做法是什麼?

回答

2

我會建議保持你的身份驗證服務在另一個微服務打包並與之通信進行身份驗證。 (基本上是你的第一選擇。)

在微服務的生態系統,你可能有10S如果不是數百個應用程序運行(最好)相當相互獨立的。第二種選擇是,每次啓動新服務時都添加了樣板。但也許更重要的是,您已將所有微服務與您當前的身份驗證方案結合在一起。最好將所有auth邏輯放在一個界面後面,並將所有auth邏輯隱藏在一個分離的地方。

1

我認爲你需要考慮兩種解決方案,並認爲哪些權衡。

有一個單一的服務處理授權:失敗的

  • 單點。如果有人犯了錯誤,那麼你的整個生態系統就會崩潰。
  • 增加了衆所周知的問題的封裝。
  • 減少所有相關服務的工作。

每個業務實現授權:

  • 將更多的獨立性,以每個服務(這是 「微服務」 的性質),你怎麼想

  • 提供了靈活性以保護您的每項服務。可能會根據每個人的意圖而有所不同。

最後,你需要找到什麼是你的需要,並根據什麼給你更多的好處做出決定。我只是列出了一些優點和缺點,但我認爲這個想法是對這一主題的投資時間,然後利用基於你認爲什麼是最適合你的團隊的決定。