http://blog.csdn.net/facekbook/article/details/54890365

权限管理

本文介绍权限管理的理论和权限管理的一些名词。

  • 介绍权限管理
  • 理解身份认证和授权
  • 掌握权限管理的数据模型

什么是权限管理

基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 
权限包括用户认证和授权两部分。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。

用户身份认证

概念

身份认证,就是判断一个用户是否是合法用户的一个过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看是否与系统中存储的该用户的用户名和口令一致,来判断用户是否正确。还有其他的身份认证方式,例如指纹、刷卡等。

用户密码身份认证流程

流程图关键对象

上面的流程图中需要理解以下关键对象: 
Subject:主体 
访问系统的用户,主体可以是用户、程序等,进行认证的都称为主体。

-Principal:身份信息 
是主体(subject)进行身份认证的标识,标识具有唯一性,如用户名、手机号、邮箱地址等,一个主体可以有多个身份,但必须有一个主身份(Primary Principal)

-credential:凭证信息 
是只有主体自己知道的安全信息,如密码、证书等。

授权

概念

授权,即访问控制,控制谁能访问那些资源。主体进行身份认证后需要分配权限后方可访问系统资源,对于某些资源没有权限是无法访问的。

授权流程

开始访问系统资源身份认证是否认证通过分配权限权限控制是否拥有访问权限继续访问访问拒绝结束yesnoyesno

下面是截图: 

流程图关键对象

授权可简单理解为who对what(which)进行how操作: 
- Who,即主体(Subject),主体需要访问系统中的资源。 
- What,即资源(Resource),如系统菜单、页面、按钮、类方法、系统商品信息等。 
-How,权限/许可(Permission),规定了主体对资源操作的许可,权限离开资源没有意义,如用户查询权限、用户添加权限、某个类方法的调用权限、编号001的用户修改权限,通过权限可知主体对那些资源都有哪些操作。 
权限分为粗粒度和细粒度,粗粒度权限是指对资源类型的权限,细粒度权限是对资源实例的权限。 
主体、资源、权限关系如下图: 

权限模型

对上面的主体、资源、权限通过数据模型表示。 
主体(账号、密码等) 
资源(资源名称、资源地址等) 
权限(权限名称、资源id) 
角色(角色名称) 
角色和权限(角色id、权限id) 
主体和角色(主体id、角色id) 
可以通过下图表示: 

通常企业开发一般会将资源表和权限表合并。如下: 
资源(资源名称、资源访问地址) 
权限(权限名称、资源id) 
合并为: 
权限(权限名称、资源名称、资源访问地址) 
模型图如下: 

权限分配

对主体进行权限分配,主体只允许对分配的权限范围内的资源进行操作。权限分配的数据通常都需要进行持久化。

权限控制

权限控制有两种方法实现,一种是基于角色的访问控制还一种是基于资源的访问控制。

基于角色的访问控制

RBAC基于角色的访问控制(Role-Based Access Control)是以角色为中心进行访问控制,比如:主体的角色为总经理可以查询企业运营报表,查询员工工资信息等,访问流程如下:

开始查询工资信息判断主体是否具有总经理角色无权访问结束yesno

上图中的判断逻辑可以理解为:

if(主体.hasRole("总经理")){查询工资
}

缺点:以角色进行访问 控制粒度较粗。系统扩展性较差。比如上图查询工资的逻辑变为总经理或部门经理,就必须要修改代码。

if(主体.hsRole("总经理") || 主体.hasRole("部门经理")){ 查询工资 }
  • 基于资源的访问控制

RBAC基于资源的访问控制(Resouce-Based Access Control)是以资源为中心进行访问控制,比如:主体必须具有查询工资权限才可以查询员工的工资信息等,访问控制流程如下:

开始查询工资信息是否有查询工资权限无权访问结束yesno

上图中的判断逻辑可以理解如下:

if(主体.hasPermission('查询工资权限标识')){查询工资
}

优点:系统设计时定义好查询工资的权限标识。即使查询工资所需要的角色变为部门经理也只需要将“查询工资权限的标识”添加到“部门经理角色”的权限列表中,判断逻辑不用修改,系统可扩展性强。

转载于:https://www.cnblogs.com/telwanggs/p/7117655.html

(转)shiro权限框架详解01-权限理论介绍相关推荐

  1. (转)shiro权限框架详解02-权限理论介绍

    http://blog.csdn.net/facekbook/article/details/54893042 权限管理解决方案 本文主要介绍权限管理的解决方法: 粗颗粒度和细颗粒度 基于url拦截 ...

  2. shiro权限框架详解02-权限理论介绍

    权限管理解决方案 本文主要介绍权限管理的解决方法: 粗颗粒度和细颗粒度 基于url拦截 使用权限管理框架 粗颗粒度和细颗粒度 什么是粗颗粒度和细颗粒度 在上一文中提到粗颗粒度和细颗粒度,但是没有细讲. ...

  3. (转) shiro权限框架详解06-shiro与web项目整合(上)

    http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...

  4. (转)shiro权限框架详解06-shiro与web项目整合(下)

    http://blog.csdn.net/facekbook/article/details/54962975 shiro和web项目整合,实现类似真实项目的应用 web项目中认证 web项目中授权 ...

  5. Shiro 安全框架 详解

    1.Shiro概述 1.1.Shiro简介 Apache Shiro是Java的一个安全(权限)框架. Shiro可以非常容易的开发出足够好的应用,不仅可以用在JavaSE环境,也可以用在JavaEE ...

  6. linux权限管理详解,linux权限管理详解-Go语言中文社区

    普通权限 -rw-r–r--. 1 root root 0 Feb 14 23:33 test 第1位标识文件类型: -:普通文件 b:块设备 c:字符设备 d:目录 l:符号链接 s:套接字文件 p ...

  7. (转)shiro权限框架详解03-shiro介绍

    http://blog.csdn.net/facekbook/article/details/54893740 shiro介绍 本文正式进入主题.本文将介绍如下内容: 什么是shiro 为什么需要学习 ...

  8. (转)shiro权限框架详解05-shiro授权

    http://blog.csdn.net/facekbook/article/details/54910606 本文介绍 授权流程 授权方式 授权测试 自定义授权realm 授权流程 开始构造Secu ...

  9. (转) shiro权限框架详解04-shiro认证

    http://blog.csdn.net/facekbook/article/details/54906635 shiro认证 本文介绍shiro的认证功能 认证流程 入门程序(用户登录和退出) 自定 ...

最新文章

  1. 梦心日记本V2.0完工
  2. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)...
  3. 设计模式(二)工厂模式
  4. python md5_Python提取MD5
  5. Angular路由跳转时,如何传递信息
  6. [Android]使用ViewPager实现图片滑动展示
  7. spring gateway 限流持久化_Spring Cloud Gateway网关如何快速实施限流方案?-Part 6
  8. 大数据分析需避免哪些错误
  9. POJ 3415 Common Substrings (后缀数组,长度不小于k的公共子串的个数)
  10. 单点登录(Single Sign On)
  11. ZZULIOJ:1047: 对数表
  12. 新中大软件显示无法连接服务器,新中大 - Guoy
  13. java pdf tiff_关于java:使用iText将tiff文件转换为pdf文件时出现异常
  14. 贴片晶振的焊接方法和注意事项
  15. php添加数据数据库乱码,php添加数据数据库乱码
  16. 计算机网络广东海洋大学简答题,广东海洋大学计算机网络历年考题(直接阅读版6套可编辑)...
  17. 到处excel表格的数据和页面的数据不一致
  18. c盘满了怎么清理垃圾而不误删?C盘清理,4个方法!
  19. wireshark抓包分析(一)之物理层Frame
  20. 高大上:光学技术“回归”地球整出“彩虹车站”

热门文章

  1. 基于SkyEye的MPC5554 片上Flash实现
  2. php thinkphp重定向,ThinkPHP框架让页面重定向方法总结
  3. (43)FPGA状态机三段式
  4. html5设置播放按钮,HTML5 Flowplayer的附加播放按钮
  5. Mind+上传模式的第三方Arduino用户库实现 -DHT11温湿度模块
  6. windows linux双系统_还在安装双系统? 试试 Windows 和 Linux 合体
  7. Linux下Exit和_exit函数说明
  8. vector与list的接口介绍与如何使用以及区别,附代码。
  9. mysql order by random,sql-MySQL:ORDER BY RAND()的替代方法
  10. efl是什么意思_efl