微服務用戶登陸認證受權設計

用戶訪問簡單流程圖:

圖片描述

用戶獲取token:

攜帶帳號密碼訪問認證中心,認證中心校驗合法後經過jwt生成token(消息體包含用戶ID,過時時間)
而且以用戶ID爲key,token爲value緩存到Redis中緩存

用戶退出、修改密碼或後臺強制用戶退出:

經過用戶ID刪除Redis緩存中對應的token服務器

用戶訪問資源:

用戶攜帶token訪問統一API網關,網關經過過濾器解析token獲取用戶ID,判斷過時時間,
經過用戶ID查詢Redis緩存是否存在,再生成新的token(消息體包含用戶ID,過時時間,用於服務與服務之間調用使用,過時時間能夠設置1分鐘左右),將新的token添加到請求頭中帶去資源服務器spa

資源訪問資源:

須要攜帶網關生成的token去訪問jwt

說明:

認證中心生成的token與網關生成的token使用的簽名不能相同,這樣能夠確保用戶沒法直接訪問資源服務器,只能經過網關去訪問。token

怎麼處理用戶角色權限(RBAC的)?

在認證中心生成的token消息體中包含用戶擁有的角色ID集合,訪問網關時從緩存中獲取角色與權限的關係,而後校驗是否有權限訪問。圖片

  • 後臺編輯角色與權限的關係只須要更新下緩存
  • 後臺編輯用戶與角色的關係時要根據用戶ID移除Redis中對應的token,用戶須要刷新token或從新登陸。
  • 後臺刪除角色時經過角色與用戶的關係數據獲取擁有對應角色的用戶集合,再根據用戶集合移除token
相關文章
相關標籤/搜索