1. 什么是权限管理
一般来说,只要有用户参与,那么该系统都会需要权限管理,权限管理实现了对用户访问系统 指定功能的限制,按照管理员定义的安全规则或权限策略,限制用户只能访问自己被授权的那些资源路径。
权限管理包括用户认证和授权两部分(俗称登录和鉴权)。也就是说先要进行用户的登录,登录以后会对用户访问的功能模块(即:访问资源的url路径)进行权限验证。
2. 用户认证(用户登录)
身份认证,简单来说就是登录。检验一个用户是否为合法用户的业务处理过程。最常见的方式为系统对用户输入的用户名和密码判断是否匹配数据库中的记录。
除此之外还有指纹认证,一卡通认证,脸部扫描,这些都需要硬件设备,比如指纹采集仪,pose机,刷脸(脸部识别系统/iphoneX)等。
3. 登录认证流程
流程中的出现主要对象:
Subject:主体,大部分情况下就是用户,但也可以是api接口(rest服务,手机端访问等),去访问系统的功能,系统需要对Subject进行身份认证。
Principal:身份信息,一般来说是唯一的,一个主体可以有多个身份,但是都有一个主身份信息(primary principal)。主要体现在账户系统和子账户。
Credential:凭证token,可以是密码 、证书、指纹、人脸等。
总结一句话:主体用户在进行身份认证时需要提供身份信息和凭证信息。简单来说就是登录。
4. 用户授权(验证用户是否拥有访问的权限)
授权,即访问控制,控制用户能否访问哪些资源。在用户进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的
流程中的出现主要对象:
Subject:主体,此时的主体已经经过登录之后认证过了的。
Resource:主体用户所访问的资源或者功能。比如用户要删除一个员工记录,这个员工记录在数据库中的主键pid为1001,那么这个资源就是1001这条在数据库中所对应的记录。在java中就是一个对象。或者查询所有员工的页面,这些员工所在数据库中的数据集也是这个资源resource。
Permission:凭证token,可以是密码 、证书、指纹、人脸等。
总结一句话:[主体用户] 对 [资源] 进行 [增删改查] 的操作
<未完待续...>
具体内容同步更新文章以及视频到公众号,知乎,豆瓣,cnblogs以及新浪微博,以官网itzixi.com为主