用户权限设计(待更新)

用户权限系统设计

案例说明

需求

  实现一个公司大楼保安系统,识别所有进入人员身份,不同身份人员能进入房间区域受限,保护公司的财产安全

设计思路

一、首先需要使身份信息具有安全性以及可维护性,并能随时读取

  1. 人员信息数据要持久化存储,创建T_USERS(ID,NAME,PWD)来存储用户信息
  2. 引入密码-加密(如密码hash等),加强安全性

二、不同身份要对应到不同的权限,并能加以管理和验证

  1. 可以通过RBAC系列模型来设计用户角色权限的数据库模型

三、避免用户和保安对话时密码被窃听

  1. 引入RSA非对称加密+数字签名算法构成HTTPS,保证无法被窃听,篡改。

四、确保员工办公室只有自己能进去

  1. 每个办公室加一个门卫,员工进入大楼内每个门都需要进行一次身份验证

五、防止机密信息外泄,限制内部人员权力

  1. 引入Token令牌,存储身份和权限信息,保证时效性,只有主门卫有权限校对密码信息

六、保证令牌的真实性和有效性

  1. 存储令牌信息,方便定时更新和查询

七、门卫权限过大,令牌数据量大时难以维护和优化

  1. 去除令牌持久化设计,通过数字校验来验证令牌

验证流程:

  1. 用户登录:请求Login,主门卫读用户表验证身份信息,确认后通过私钥生成一份数字签名(明文+签名)

  2. 用户进入各个房间:各门卫用公钥解密签名,校验结果和明文,确认真实性,再读取明文数据确定权限。

  根据以上思路可以确定需要技术池;HASH密码,RSA,数字签名算法,HTTPS,JWT。即基于Token的Web认证。

1
2
3
现在新增需求:系统要记录所有房间的人员进出记录,记录每个人员进出大楼的次数,高层可以中断某人员的进入权限。

此时会发现基于Token的认证因为是无状态的,所以无法及时撤销员工的进出权限,而记录接口进出记录需要在每次认证时记录数据,可以通过AOP在通过认证跳往接口前记录访问数据,记录进入次数即统计登录次数,只需在登录接口根据统计需求实现即可。

  

功能实战

关键词:Spring Boot + SqlServer + Jpa + Shiro + ehcache + JWT + HTTPS + RSA

(未完待续…)


实战设计

(未完待续…)