设计目的
出于对一些敏感信息的安全性考虑,接口的响应信息需要进行加密,避免明文传输
使用场景
-
本系统前端响应信息加密
-
第三方系统响应信息加密
功能设计思路
-
配置模式加密
使用场景:本系统前端响应信息加密
-
在nacos中配置需要加密的接口(没有使用nacos等配置中心就配置在项目配置文件中或者直接配置在数据库中都可以),这里使用PathMatcher路径匹配器匹配,支持各种形式的路径配置
-
后端在全局过滤器识别是否是加密接口,如果是加密接口则对result进行AES加密,并在响应头中添加ENCRYPTION=1
-
前端在全局拦截器中判断响应头是否有ENCRYPTION=1,存在的情况下对result进行AES解密
-
注解模式加密
使用场景:第三方系统响应信息加密(配置模式的配置信息会被改动,为避免配置变动使系统对接出现问题,与第三方系统对接的接口使用注解模式加密)
-
在需要加密的Controller接口中添加@EncryptResult自定义注解
-
使用切面对加了@EncryptResult的接口进行响应拦截,为避免重复加密,如果在配置模式中已经配置了加密接口的不再做加密处置,否则对result进行AES加密,并在响应头中添加ENCRYPTION=1(这里的头主要和配置模式加密做兼容给前端使用,第三方系统可以不需要识别这个头)
-
第三方系统使用AES解密对result信息进行解密