關於微服務分布式架構的權限資源設計初步設想
最近開發的系統是前后端分離+微服務分布式架構,不同於單體應用的權限身份校驗機制,前后端分離的情況下,無法直接確認前端請求者的身份權限,需要通過第三方鑒權中心來操作,身份校驗較為簡單,直接過濾網關級別的請求即可,但是權限校驗就比較復雜了。
初步設想
資源:
- 系統
- 菜單
- 按鈕
- 服務
- api
對象:
- 部門
- 人員
- 賬號
樞紐:
- 角色
整體關系如下:對象通過樞紐進行資源的權限分配
數據庫設計:
通過對中間表的維護,來收集用戶的權限信息,其中部門角色具有繼承的特性
使用結果
菜單權限
菜單權限通過前端配合實現動態路由,可以實現完全的權限控制,其中按鈕的權限主要還是在前端進行邏輯處理,服務端完全無法控制,只能作為數據提供者
API權限
API權限,通過上面的權限體系可以做到顆粒度為API級別的控制,功能可以實現
不足之處:問題在於,這個關系表人工維護的話,成本較大,因為需要明確規定好該頁面調用了哪些接口,前端有變更則需要及時錄入數據,否則會響應無操作權限,這里的想法是分三步走,
第一步:首先開發前后端同步開發,前端只維護系統菜單數據,后端維護服務接口數據,菜單接口關系表暫時不進行維護
第二步:前后端初步開發完畢之后,通過小工具掃描前端代碼, 進行菜單接口關系的自動錄入
第三步:通過搭建一個API接入申請系統,有需求變更的時候,前端申請某個頁面的需求變更,並對新增的和刪除的API進行申報,數據校驗完畢之后,申請系統自動異步更新菜單接口關系表,完成兩者的動態維護