簡體   English   中英

Rails:使用Knock(JWT)提供專用授權服務和應用服務的微服務架構

[英]Rails: Microservice architecture with dedicated authorization service and app services using Knock (JWT)

我現在正試圖將單片應用程序分離到微服務(專用rails應用程序)並想知道 - 是否有從每個服務移動授權服務的解決方案?

例如,我有6個不同的Rails API服務,其中'knock'gem具有用於驗證目的的用戶模型。 所有這些服務共享一個用戶數據庫。

我想用用戶模型實現專用服務,但是其他服務如何用給定的令牌驗證用戶?

此外,我希望能夠控制用戶可以使用和不能使用的服務。 那么應該有AccessRole服務嗎?

案件草案:

  1. 用戶轉到“文章”(前端UI客戶端)
  2. auth_service正在驗證來自客戶端的令牌
  3. access_service以某種方式從auth_service獲取消息並驗證用戶的角色以訪問“文章”資源。
  4. articles_service使用json數據向客戶端發送響應。

這里還有一些問題:

  1. access_service如何與auth_service通信? 他們應該使用一個用戶數據庫來驗證用戶的憑據和角色嗎?
  2. articles_service等 - 如果他們成為私人服務而無法訪問公眾並作為黑盒子給用戶?

我一直在玩這個問題,並沒有任何好的文檔解決方案。 我要做的是構建一個管理用戶和訪問控制列表(ACL)的服務。

  1. 身份服務 - 客戶端將授權自己訪問API中的其他服務。

login [POST] email password

這將返回一個JWT令牌,在有效負載部分中將具有以下信息:

  1. 用戶身份
  2. ACL

ACL可以是他們擁有的允許角色的數組。 這樣,當客戶端向API發出請求時,響應請求的服務可以內省用戶ID(Knock-current_user),然后您可以從有效負載中獲取ACL。 我認為很容易添加一個before_action來驗證適當的角色。

暫無
暫無

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

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