61.java项目-activiti实战项目(7)--权限控制RBAC模型

本文的架构如图
61.java项目-activiti实战项目(7)--权限控制RBAC模型_第1张图片

权限控制-RBAC模型

一.什么是RBAC模型

RBAC(全称:Role-Based Access Control)基于角色的权限访问控制,作为传统访问控制(自主访问,强制访
问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些
角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责
任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合
并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观
情况。
访问控制是针对越权使用资源的防御措施,目的是为了限制访问主体(如用户等) 对访问客体(如数据库资源等)
的访问权限。企业环境中的访问控制策略大部分都采用基于角色的访问控制(RBAC)模型,是目前公认的解决大
型企业的统一资源访问控制的有效方法

二.RBAC的设计思路

基于角色的访问控制基本原理是在用户和访问权限之间加入角色这一层,实现用户和权限的分离,用户只有通过激
活角色才能获得访问权限。通过角色对权限分组,大大简化了用户权限分配表,间接地实现了对用户的分组,提高
了权限的分配效率。且加入角色层后,访问控制机制更接近真实世界中的职业分配,便于权限管理。
61.java项目-activiti实战项目(7)--权限控制RBAC模型_第2张图片
在RBAC模型中,角色是系统根据管理中相对稳定的职权和责任来划分,每种角色可以完成一定的职能。用户通过
饰演不同的角色获得角色所拥有的权限,一旦某个用户成为某角色的成员,则此用户可以完成该角色所具有的职
能。通过将权限指定给角色而不是用户,在权限分派上提供了极大的灵活性和极细的权限指定粒度。

三.表结构分析

61.java项目-activiti实战项目(7)--权限控制RBAC模型_第3张图片
一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型
中,用户与角色之间,角色与权限之间,一般者是多对多的关系。

后端常见的认证鉴权的策略

1.HTTP Basic Authentication

不安全,密码和用户名保存在客户端的请求头的Authorization中,服务端完全不存放用户认真的额数据.
具体请看: https://blog.csdn.net/ShuSheng0007/article/details/89598299

2.session-cookie

cookie:客户端保存数据,切因为浏览器跨域存在安全问题,所以cookie是不支持跨域的.
session:客户登陆后的数据存放在服务端,但是有两个问题,第一用户认证和授权的数据存放在服务器内存,可能导致服务器内存溢出.第二分布式项目如果用户登陆之后认证信息存放在session中,因为session是一个进程及一个微服务中独立的.所以分布式系统中不适合.
具体参考:https://editor.csdn.net/md/?articleId=104638698

3.Token 验证

请看下一篇文章,token及jwt

4.OAuth(开放授权)

略,以后做补充

你可能感兴趣的:(ihrm项目,javaEE)