通用用户权限管理系统
- 一、系统安全
- 二、登录授权
- 三、系统内部安全
- 1. 相关实体
- 1.1 实体关系(ER)
- 2. 菜单权限
- 3. 接口权限
- 3.1 权限获取
- 3.2 接口调用鉴权
- 4. 数据权限
- 四、其他
一个没有权限控制的系统,是非常不安全的。
在日常业务运营的系统中台,基本都会存在用户的菜单权限控制,会根据当前用户拥有的权限进行菜单展示。比如某某岗位拥有菜单A、菜单B的权限,某某岗位拥有菜单C、菜单D的权限。基础版的用户权限控制,只对用户菜单权限做了控制,在接口、按钮等方面,还是存在安全隐患,会存在一些越权操作(水平越权、垂直越权),并且某些系统还会存在数据权限控制,如不同租户只能查看当前租户下的相关数据。所以,进阶版用户权限控制,需要在用户展示,接口调用安全,数据权限等方面进行全方位的权限控制管理。
一、系统安全
系统安全一般会包括以下几个点:
- 网络安全:ip白名单;
- 系统访问安全:登录授权,菜单权限控制,接口越权处理;
- 数据安全
- 数据范围:用户只能查看当前租户下的数据;
- 数据传输安全:加解密,验签
- 数据存储安全
- 数据脱敏
二、登录授权
登录鉴权是系统必备的功能,目前很多开源的安全框架都提供这方面的功能,简化的登录鉴权的开发,常见的有SpringSecurity,Oauth2,Shiro等,基于上面的框架,我们可以简单、快速的完成登录鉴权的开发。常见的授权方式有:
-
授权码模式:授权码模式(Authorization Code):功能是最完整的,流程也是最严密的,国内各大服务提供商(微信、微博、淘宝、百度)都是使用此授权模式进行授权。该授权模式可以确定是用户进行授权的, 并且令牌是认证服务器放发到第三方应用服务器,而不是浏览器上 。流程如下:
-
密码模式:将用户和密码传过去,直接获取 accesstokne ,用户同意授权动作是在 第三方应用上完成 ,而不是在认证服务器。第三方应用申请令牌时,直接带用户名和密码去向认证服务器申请令牌。 流程如下:
- 用户向客户端直接提供认证服务器想要的用户名和密码。
- 客户端将用户名和密码发给认证服务器,向