首先让咱们用一句话区分认证(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>