什么是权限管理

基本涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。

权限管理包括用户身份认证和授权两个部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。

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),如系统菜单,页面,按钮,类方法信息等。资源包括资源类型和资源实例(用户类:资源类型和用户对象:资源实例)。

how,权限/许可(Permission),规定了主体对资源的操作许可,权限离开资源没有意义,通过权限可知主体对哪些资源都有哪些操作许可。

权限分为粗颗粒和细颗粒,粗颗粒权限是指对资源类型的权限,细颗粒权限是对资源实例的权限。

主体,资源,权限关系图:

1.3.4.      权限模型

主体,资源,权限通过数据模型表示。

主体(账号,密码)

资源(资源名称、访问地址)

权限(权限名称、资源id)

角色(角色名称)

角色和权限关系(角色id和权限id)

主体和角色关系(主体id和角色id)

企业开发把资源和权限合并为一张表,

资源(资源名称,访问地址)

权限(权限名称,资源id)

合并:

权限(权限名称,资源名称,资源访问地址)

1.3.5.      权限分配:

对主体分配权限,主体只允许在权限范围内对资源进行操作,权限分配的数据需要持久化,根据上边的数据模型城建表并将用户的权限信息储存在数据库中。

1.3.6.      权限控制

用户拥有权限即可操作权限范围内的资源,系统不知道主体是否具有访问权限需要对用户的访问进行控制。

1.3.6.1.  基于角色的访问控制

RBAC基于角色的访问控制()是以角色为中心进行访问控制。比如:主体的角色为总经理可以查询企业运营报表。

缺点:一角色进行访问控制粒度较粗,若主体变为总经理和经理则需要修改代码,可扩展性差。

1.3.6.2.  基于资源的访问控制

RBAC基于资源的访问控制()是以资源为中心进行访问控制,比如:主体必须具有查询工资的权限才可以查询工资。

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

权限管理解决方案:

1.1. 粗颗粒度和细颗粒度

1.1.1.      什么是粗颗粒度和细颗粒度

对资源类型的管理称为粗颗粒度权限管理,即只控制到菜单,按钮,方法,粗颗粒度例子:用户具有用户管理的权限,具有到处订单明细的权限。

对资源实例的管理称为细颗粒度权限管理,即控制到数据级别的权限,比如:用户只允许修改本部门的员工信息,用户只允许到处自己创建的订单明细。

1.1.2.      如何实现粗颗粒度和细颗粒度

对于粗颗粒度的权限管理可以很容易做系统架构级别的功能,即系统功能操作使用统一的粗颗粒度的权限管理。

对于细颗粒度的权限管理不建议做成系统架构级别的功能,因为对数据级别的控制是系统的业务需求,随着业务需求的变更业务功能的可能性大,建议对数据级别的权限控制在业务层跟杏花开发,比如:用户只允许修改自己创建的商品信息可以在service接口添加校验实现,service接口需要传入当前操作人的表示,与商品信息创建人标识对比,不一致则不允许修改商品信息。

1.2. 基于url拦截

基于url拦截是企业中常用的权限管理方法,实现思路:将系统操作的每个url配置在权限表中,将权限对应到角色,将角色分配给用户,用户访问系统功能通过Filter进行过滤,过滤器获取到用户访问的url,只要访问url是用户分配角色中的url则放行继续访问。

以下是模型图:

java权限管理+授权与认证_权限管理(认证和授权)相关推荐

  1. java公寓管理系统设计与实现_宿舍管理系统设计与实现

    宿舍管理系统设计与实现[java毕业论文下载] 宿舍管理系统 第一章  绪论 1.1  课题简介 为了便于老师对学生信宿生活的管理,学生资料的整理,和快节奏,高效率的工作环境.所以本次我设计的课题是学 ...

  2. java酒店管理系设计开题报告_酒店管理专业本科毕业论文开题报告范文

    酒店管理专业本科毕业论文开题报告范文 下面是应届毕业生网小编整理的酒店管理专业本科毕业论文开题报告范文,希望对大家有所帮助. 一. 课题背景(或国内外研究现状) 从20世纪以来,资本主义经济快速发展, ...

  3. 近期你已经授权登录过_原来你的qq授权登录过这么多的网站 一键查出撤销了吧...

    现在好多网站都支持社交账号登录,而我每次习惯直接点击QQ的一键登录,然后QQ就会提示授权给该网站,时间一长,根本不记得自己的QQ账号究竟注册过哪些网站了.而且有些网站还会时不时的给你推送一些消息,很是 ...

  4. cas如何实现多系统间的相互认证_统一身份认证和单点登录的区别

    首先大家会遇到这样一个问题,统一身份认证和单点登录的概念是什么? 百度百科对统一身份认证的定义 所谓身份认证,就是判断一个用户是否为合法用户的处理过程.最常用的简单身份认证方式是系统通过核对用户输入的 ...

  5. java 线程的创建和执行_线程管理(一)线程的创建和运行

    声明:本文是< Java 7 Concurrency Cookbook>的第一章, 作者: Javier Fernández González 译者:郑玉婷 校对:欧振聪 线程的创建和运行 ...

  6. java支付宝网页授权登录界面_网页版的支付宝授权登录(vue+java)

    api接口文档:https://docs.open.alipay.com/289/105656 后台管理系统原本是用账号密码登录的,不过需求要改成支付宝授权, 前端仅仅需要改登录页,以及添加一个授权返 ...

  7. java餐饮管理系统需求文档_餐饮管理系统需求文档.doc

    实用文案 标准文档 餐饮管理系统系统需求分析 编写 餐饮管理系统项目小组 审核 批准 受控状态 日期 2012-8 目 录: TOC \o "1-5" \h \z \u HYPER ...

  8. 卡巴斯基授权许可文件_制片方未提供电视台授权证明,构成根本违约吗?

    在制作娱乐法101课程的过程中,需要检索很多案例,有时候也也看到一些似乎不太合理的判决书. 在一起电视播映权纠纷中,合同中一般会常规约定制作方需要向电视台提交确保其在合同授权区域.授权范围.授权期限内 ...

  9. 银行网点服务认证_银行网点服务认证标准

    伴随着我国银行卡产业和银行信息化的快速发展,以ATM(自动柜员机).CDT(存款机)等设备为载体的自助银行逐渐成为国内商业银行延伸网点.塑造品牌.服务客户的重要手段.下文是,欢迎阅读!一xxx银行天津 ...

最新文章

  1. 开发各种信息管理系统的标准演示数据都帮你整理好了,少了录入演示\测试\模拟数据的烦恼了[提供下载]...
  2. mysql 手工注入教程_mysql手工注入步骤
  3. java78条注意事项
  4. 他因为泼了李彦宏一瓶水,成功圈粉无数,成为「网红」
  5. 如何快速实现Mathematica和Mathtype之间的切换
  6. 人声处理_10款免费的人声处理工具
  7. 【人体姿态估计2】Real-time Multi-person 2d pose estimation using part affinity fields_2017
  8. [Leedcode][JAVA][第300题][最长上上子序列][动态规划][压缩空间]
  9. JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))
  10. 前端打印ip地址_赶紧收藏 | 前端应该会的23个linux常用命令
  11. 学子商城电子产品销售系统
  12. 《机器学习实战》中英文电子书 + 源代码下载
  13. 概率密度函数php,科学网—大气边界层风速增量的概率密度函数(Probability Density Functi - 刘磊的博文...
  14. setValue: forKey: 和 setValue: forKeyPath:
  15. 130292015015-傅志彬-第1章作业
  16. 商业创新奇才,巧用大数据分析带你穿越古代当首富
  17. The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0 维度不匹配
  18. 电脑用c语言恢复出厂设置,教您如何用英语将Lenovo笔记本计算机恢复为出厂设置...
  19. 一文让你通俗理解奇异值分解
  20. layui框架学习(13:辅助元素)

热门文章

  1. ABTest样本量计算
  2. 汉诺塔(Hanoi)问题归纳总结
  3. linux vim打开文件显示 :filetype unknown
  4. 中国科大计算机学院何奇兵,中国科大第二十届辩论赛圆满落幕
  5. Binder相关面试题目
  6. openshift 学习笔记-2
  7. Kotlin 集合函数锦集,2021程序员进阶宝典
  8. 什么是快照? 快照与备份有什么区别?
  9. 万能的公告栏轮播 View,也可用于商品个性垂直轮播展示
  10. android toast设置布局,Android 自定义布局的Toast