前言
- 在系统的基础架构中,安全框架、令牌鉴权已经是默认的基础功能
- 但某些场景,仅有鉴权是不够的,一些比较重要的数据,一旦泄露将会导致很严重的后果
- 所以在此之外,还需要一个针对请求报文加密解密的工具,下面我们就来看一下这个功能如何使用
依赖引用
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-api-crypto</artifactId>
</dependency>
加密解密支持
- 可进行加密的方式有:
- AES(
@ApiEncryptAes
)
- AES(
- DES(
@ApiEncryptDes
)
- DES(
- 可进行解密的方式有:
- AES(
@ApiDecryptAes
)
- AES(
- DES(
@ApiDecryptDes
)
- DES(
注解说明
一、解密(用于请求参数)
@ApiDecryptAes
、@ApiDecryptDes
、@ApiDecryptRsa
,注解 secretKey
可配置当前使用的私钥,优先于全局的配置。
可使用范围:
- 方法参数(用于get、post 的 url 参数),可配置统一的url变量名。base64 的 json 数据。
- 方法,用于(post 的 body)
- 类,表示整个控制器的(post 的 body)用于加密。
二、 加密(用于响应数据)
@ApiEncryptAes
,@ApiEncryptDes
、@ApiEncryptRsa
,注解 secretKey
可配置当前使用的私钥,优先于全局的配置。
可使用范围:
- 方法,用于响应的 body加密。
- 类,表示整个控制器的响应的 body加密。
配置说明
配置项 | 默认值 | 说明 |
---|---|---|
blade.api.crypto.enable | true | 是否开启 api 签名 |
blade.api.crypto.param-name | data | url的参数签名,传递的参数名。例如:/user?data=签名后的数据 |
blade.api.crypto.rsa-private-key | rsa 私钥 | |
blade.api.crypto.aes-key | aes 密钥 | |
blade.api.crypto.des-key | des 密钥 |
注意:代码中的文本转换和签名均采用的 utf-8
字符集。
本模块需要开启jackson
text-plain
的支持。
#blade配置
blade:
#接口配置
api:
# 报文加密配置
crypto:
# 启用报文加密配置
enabled: true
# 使用AesUtil.genAesKey()生成
aes-key: "O2BEeIv399qHQNhD6aGW8R8DEj4bqHXm"
# 使用DesUtil.genDesKey()生成
des-key: "jMVCBsFGDQr1USHo"
#jackson配置
jackson:
# 支持text文本请求,与报文加密同时开启
support-text-plain: true