本篇簡單記錄框架搭建中關於角色權限設計的思路。權限系統基於RBAC的模式,通過在Ocelot網關中校驗JWT的Token有效性,獲取到角色Id,通過Casbin引擎驗證用戶是否有訪問接口的權限。
設計思路如下圖所示:

具體實現如下圖所示:

技術選型:
1.為什么基於RBAC模式?
通過對比ACL和ABAC以及RBAC這三種模式,最終選擇了RBAC,ACL不利於角色權限管理,ABAC的權限管理的顆粒度比較細,目前業務暫時不需要,基於RBAC的數據庫設計圖大致如下:
實際表設計可以大致參考,關聯表的細分對於業務的解耦有很大幫助
2.為什么采用Casbin,而不是微軟基於Claim的權限聲明
基於Claim的授權策略不夠靈活,需要指定策略名,且無法實現RBAC1,RBAC2模型的實現,即對於角色繼承和角色間的約束無法實現,Casbin作為一個開源的訪問控制框架,對此有很好的支持
3.為什么在Ocelot中配置權限校驗
基於微服務設計的思想,在所有請求中都會通過網關來分發,為了方便統一管理,在Ocelot中配置其中間件,攔截所有請求,通過Token獲取角色Id,判斷當前角色是否有權限訪問。
以上僅用於學習和總結!
附: