想法
# 单点登录
单点登录的解决方案,以JWT为例
I. 用户访问其他系统,会在网关判断token是否有效
II. 如果token无效则会返回401(认证失败)前端跳转到登录页面
III. 用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie
IV. 再去访问其他服务的时候,都需要携带token,由网关统一验证后路由到目标服务
活动图
用户访问页面,如果没有权限会跳转到登录页,在请求路径中加上callback表示从哪里跳转到登录页,登录完成后会重定向到这个路径。
# RBAC权限 (opens new window)
后台的管理系统,更注重权限控制,最常见的就是RBAC模型来指导实现权限
RBAC(Role-Based Access Control)基于角色的访问控制
- 3个基础部分组成:用户、角色、权限
- 具体实现
- 5张表(用户表、角色表、权限表、用户角色中间表、角色权限中间表)
- 7张表(用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表)
在实际的开发中,也会使用权限框架完成权限功能的实现,并且设置多种粒度,常见的框架有:
- Apache shiro
- Spring security(推荐)
# 上传数据的安全性
# 对称加密
文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥
优点: 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
缺点: 没有非对称加密安全.
用途: 一般用于保存用户手机号、身份证等敏感但能解密的信息。
常见的对称加密算法有: AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256
# 非对称加密
公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密
私钥隐秘保存,公钥可以下发给信任客户端.
优点: 非对称加密与对称加密相比,其安全性更好;
缺点: 非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
用途: 一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或者签名的解密或者校验使用.
常见的非对称加密算法有: RSA、DSA(数字签名用)、ECC(移动设备用)、RS256 (采用SHA-256 的 RSA 签名)
# 使用选择
一般选择使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台,后台解密后处理数据
- 但是非对称加密设用于传输的数据较小,要求安全性高
传输的数据很大建议使用对称加密,不过不能保存敏感信息
- 对称加密密钥可以通过非对称加密传输
日志
- 我们搭建了ELK日志采集系统
- 介绍ELK的三个组件:
- Elasticsearch是全文搜索分析引擎,可以对数据存储、搜索、分析
- Logstash是一个数据收集引擎,可以动态收集数据,可以对数据进行过滤、分析,将数据存储到指定的位置
- Kibana是一个数据分析和可视化平台,配合Elasticsearch对数据进行搜索,分析,图表化展示
?有一个比较轻量组件叫做Graylog,这个搜索语法跟ELK很像,但是部署起来很简单很轻量
# 软件测试
# CPU飙高
使用jps、jstack命令排查
# 调优
接口压测
慢接口
慢SQL:使用慢日志
缓存方案:redis、caffeine、tomcat