zzb-secret-adapter 参数加解密处理组件

zzb-secret-adapter 宗旨是打造一个支持多算法、多形式(常规单应用,网关应用(zuul/gateway))的一个简单易用而又灵活的参数加解密组件

GitHub地址
https://github.com/zzbsss/zzb-secret-adapter

整体架构

在这里插入图片描述

目前已实现功能

1.支持sm2、rsa、aes等算法进行加解密,并支持用户自定义算法进行加解密

2.支持用户自定义当前接口是否需要加解密,方便用户适应新老接口

3.支持@RequestParam、@RequestBody、@PathVariable等常用参数处理

4.实现单体应用、网关应用(zuul)的参数加解密

5.支持自定义字段配置(指定字段加解密)

配置

启动类上添加注解
@EnableParamSecurity

# 应用类型,comm 通用应用、zuul统一网关、gateway网关(待实现) 
zzb.secure.type=comm 
# 加解密算法 支持 aes/sm2/rsa 和自定义
zzb.secure.algorithm.algorithm-name=aes
#  对称加密算法秘钥
zzb.secure.algorithm.key=qabAXTk9Z1akNjkQ
# 非对称加密算法私钥
zzb.secure.algorithm.private-key=d0efc0377a7f7f0e106c0c4c5d26678c685f400ab0a9970220952868fc426b38
# 非对称加密算法公钥
zzb.secure.algorithm.public-key=049eea820a4850372c558f4ab0d58dd598cdd0fab2bbd12dcfa932da92fa692dfd1f9be65d6d0a2e5ac4470130b473e6e1b34fa6aee57b9bb1b08f6c2da7a14c9a
# 模式 all 全局启用、support (默认)打了注解才进行加解密、single 单方向启用,需要配合leaf.secure.direction 启用
zzb.secure.model=support
# 启用方向 all 入方向解密,出方向加密、request 入方向解密、response 出方向加密
zzb.secure.direction=all
# 请求头校验,只针对带了自定请求头的才进行加解密
zzb.secure.header-flag=zzb
# 白名单,不进行加解密的请求路径
zzb.secure.white-urls[0]=/testEn
# 指定请求字段解密(可选)
zzb.secure.secure-params.request=param
# 指定响应字段加密 (可选)
zzb.secure.secure-params.response=data

使用示例

  
    @PostMapping("testEn")
    @DecryptBody
    @EncryptBody
    public String testEn(@RequestBody Map<String, Object> map) {
        log.debug(map.toString());
        return "success";
    }

    @PostMapping("testEn/{param}")
    @DecryptBody
    public String testEn(@DecryptPathVariable String param) {
        log.debug(param);
        return "success";
    }

    @GetMapping("testEn")
    public String testEn(@DecryptParam  String param, @RequestParam String param1) {
        log.debug(param);
        return "success";
    }

    @GetMapping("testEnDTO")
    public String testEnDTO(@DecryptParam UserDTO userDTO) {
        log.debug(userDTO.toString());
        return "success";
    }

示例截图

在这里插入图片描述
在这里插入图片描述

Q&A

1.RequestParam部分参数需要解密,部分参数不需要
在需要解密的参数上打上 DecryptParam 注解,不需要加密的参数仍然使用 RequestParam 注解
如果参数名字有与实际参数名不同则配置 DecryptParam 的value 属性

2.如何开启网关配置
启用配置 zzb.secure.type=zuul 即可

3.如何使用自定义的加解密算法
实现接口 AlgorithmType 中的加解密方法, 并将该类加入spring 容器中,不需要配置BeanName,使用默认BeanName
例如 XxxAlgorithm 实现了 AlgorithmType,则配置 如下
开启配置 zzb.secure.algorithm.algorithm-name=xxx

4.前端如何进行加解密
如果是vue,可使用axios 中的请求拦截器进行加密,响应拦截器进行解密
其他前端框架类似

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值