首先讓咱們用一句話區分認證(Authentication)和受權(Authorization):git
Authing 支持很是豐富的認證、受權手段:github
對於受權流程,訪問控制(Access Control)策略是很是重要的一環,目前 Authing 一共支持(或即將支持)三種訪問控制手段:面試
基於角色的訪問控制(Role-based access control,簡稱 RBAC),指的是經過用戶的角色(Role)賦予其相關權限,這實現了細粒度的訪問控制,並提供了一個相比直接授予單個用戶權限,更簡單、可控的管理方式。小程序
當使用 RBAC 時,經過分析系統用戶的實際狀況,基於共同的職責和需求,將他們分配給不一樣的角色。而後能夠授予每一個用戶一個或多個角色,每一個角色具備一個或多個權限,這種 用戶-角色、角色-權限 間的關係,讓咱們能夠不用再單獨管理單個用戶,用戶從具有的角色裏面繼承所需的權限,從而使得用戶賦權這件事變得更加簡單。segmentfault
舉一個公司內全部在職員工具有登陸公司郵箱的權限的場景,若是應用 RBAC,就能夠賦予全部在職員工 employee 角色,employee 角色具有 email:login 權限,如此全部員工就具有了登陸公司郵箱的權限。若是有員工離職,只須要將其移出 employee 角色,而不需單獨收回權限。本質上,一個角色(Role)就是一組權限(Permission)的集合。使用角色添加、刪除、調整權限,相比單獨賦予單個用戶權限更加簡單。當你的用戶基數不斷增加時,角色會變得尤其有用。安全
在規劃訪問控制策略時,最佳實踐是給予用戶完成工做必須的最小權限。服務器
Feature | Authing 支持狀況 | 備註 |
---|---|---|
角色 | ||
建立/修改/刪除 角色 | In future release | |
分頁查詢 | YES | |
經過名稱、描述搜索角色 | YES | |
角色能被授予給分組 | YES | |
角色嵌套、分層 | In future release | |
角色經過 namespace、多租戶管理 | In future release | |
查詢角色具有的全部權限 | YES | |
查詢角色中包含的全部用戶 | YES | |
用戶 | ||
建立/修改/刪除 用戶 | YES | |
分頁查詢 | YES | |
經過暱稱、郵箱搜索用戶 | YES | |
查看最近註冊、登陸的用戶 | YES | |
經過第三方應用查找用戶 | In future release | |
經過 lucence 語法搜索用戶 | In future release | |
用戶能夠擁有一個或多個角色 | YES | 最多 50 個 |
用戶能在一個或多個分組裏 | YES | 最多 50 個 |
查看一個用戶具有的全部角色 | YES | |
查看一個用戶所在的全部分組 | YES | |
查看一個用戶所具有的全部權限 | YES | |
經過 JSON 導入/導出用戶 | YES | |
自定義密碼加密函數 | YES | |
權限 | ||
建立/修改/刪除 權限 | YES | |
分頁查詢 | YES | |
經過名稱、描述搜索權限 | In future release | |
能直接賦予用戶權限 | To be determined | |
能受權給一個或多個角色 | YES | |
查詢全部具備某個權限的用戶 | In future release | |
查詢全部具備某個權限的角色 | In future release | |
查詢全部具備某個權限的分組 | In future release | |
分組 | ||
分頁查詢 | YES | |
建立/修改/刪除 分組 | YES | |
經過名稱、描述搜索分組 | In future release | |
直接從第三方用戶目錄導入(如 AD, LDAP, SAML) | In future release | |
分組嵌套、分層 | In future release | |
查看分組的子分組 | In future release | |
分組經過 namespace、多租戶管理 | In future release | |
查看一個分組具有的全部用戶 | YES | |
查看一個分組具有的全部角色 | YES | |
查看一個分組具有的全部權限 | YES | |
配置 | ||
自定義受權流程策略(authorization policies) | In future release | |
自定義是否將權限加入 Token | In future release | 默認爲否 |
自定義是否將角色加入 Token | In future release | 默認爲否 |
自定義是否將分組加入 Token | In future release | 默認爲否 |
除了直接賦予用戶某個角色,做爲 RBAC 的最佳實踐,咱們還能夠經過分組管理用戶,將一個分組和一組角色綁定,在此分組內的全部用戶就會繼承這些角色,並自動具有了這些角色包含的權限。這些概念之間的關係爲:Permission <-> Roles <-> Groups <-> Users,以下圖所示:微信
用分組管理用戶、分組包含一組權限,這也是咱們推薦使用的方式。app
分組和角色的區別運維
分組(Group)和角色(Role)有什麼區別?
常見的 Group 和 Role 示例:
舉例來講:能夠這樣創建 Role 和 Group 之間的關係:
咱們推薦使用分組(Group)管理用戶,用 Role(角色) 管理權限,不要直接賦予單個用戶某個權限。若是是某個用戶臨時須要具有某個角色,能夠臨時授予,結束以後再收回。
重磅:Authing 將於2020 Q1 開源,歡迎 Star 關注 https://github.com/Authing/authing
Authing 提供專業的身份認證和受權服務。
咱們爲開發者和企業提供用以保證應用程序安全所需的認證模塊,這讓開發人員無需成爲安全專家。
你能夠將任意平臺的應用接入到 Authing(不管是新開發的應用仍是老應用均可以),同時你還能夠自定義應用程序的登陸方式(如:郵箱/密碼、短信/驗證碼、掃碼登陸等)。
你能夠根據你使用的技術,來選擇咱們的 SDK 或調用相關 API 來接入你的應用。當用戶發起受權請求時,Authing 會幫助你認證他們的身份和返回必要的用戶信息到你的應用中。
![]()
<div align=center>Authing 在應用交互中的位置</div>