Shiro
Posted xuweiweiwoaini
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shiro相关的知识,希望对你有一定的参考价值。
1 权限管理
1.1 什么是权限管理?
- 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。
- 权限管理包括用户身份认证和授权管理两部分,简称认证授权。对于需要访问控制的资源用户首先进过身份认证,认证通过后用户才具有该资源的访问权限。
1.2 用户身份认证
1.2.1 什么是身份认证?
- 身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和密码,判断是否和系统中存储的该用户的用户名和密码一致,来判断用户身份是否正确。对于采用指纹机等系统,则出示指纹;对于硬件key等刷卡系统,则需要刷卡。
1.2.2 用户名和密码身份认证流程
1.2.3 关键对象
- 上面的流程图中需要理解以下关键对象
- subject:主体
- 访问系统的用户,主体可以是用户、程序等,进行认证的都称为主体。
- Principal:身份信息
- 是主体进行身份认证的标识,标识必须具有唯一性,如用户名、手机号、邮箱地址等,一个主体可以有多个身份信息,但是必须有且仅有一个主身份(Primary Principal).
- Credential:凭证信息
- 是只有主体自己知道的安全信息,如密码、证书等。
1.3 授权管理
1.3.1 什么是授权管理?
- 授权,即访问控制,控制谁能访问那些资源。主体进行身份认证后需要系统分配权限方可访问系统中的资源,对于某些资源没有权限是无法访问的。
1.3.2 授权过程
1.3.3 关键对象
- 授权可简单理解为who对what(which)进行how操作。
- who:主体(Subject)
- 主体需要访问系统中的资源。
- what:资源(Resource)
- 如系统菜单、页面、按钮、类方法、系统商品新信息等。
- 资源包括资源类型和资源实例,比如商品信息就是资源类型,类型为t01的商品就是资源实例。
- how:权限/许可(permission)
- 规定了主体对资源的操作许可,权限离开资源没有意义,如用户查询权限、用户添加权限、某个类方法的调用权限、编号为001用户的修改权限等,通过权限可知主体对那些资源都有那些操作许可。
- 权限分为粗颗粒和细颗粒,粗颗粒权限是指对资源类型的权限,细颗粒权限是对资源实例的权限。
1.3.4 主体、资源、权限的关系图
1.3.5 分配权限
- 用户需要系统分配相应的权限才可访问相应的资源。权限是对于资源的操作许可。
- 通过给用户分配资源权限需要将权限信息持久化,比如存储在关系型数据库中。
1.3.6 权限模型
- 对上面的主体、资源、权限可以通过如下的表来表示:
- 用户(账号、密码等)
- 角色(角色名称)
- 权限(权限名称、资源的id)
- 资源(资源名称、访问地址)
- 用户角色中间表(用户Id、角色id)
- 角色权限中间表(角色id、权限id)
- 通常企业开发中将资源和权限表合并为一张表
- 资源(资源名称、访问地址)+权限(权限名称、资源的id)--> 权限(权限名称、资源名称、资源访问地址)
- 上图通常称为权限管理的通用模型,不过实际企业在开发的时候会根据系统自身的特点对上图进行修改,但是用户、角色、权限、用户角色关系、角色权限关系一般是不变的。
1.3.7 权限控制(授权的核心)
1.3.7.1 基于角色的访问控制
1.3.7.2 基于资源的访问控制
以上是关于Shiro的主要内容,如果未能解决你的问题,请参考以下文章