前言

  • 在系统的基础架构中,安全框架、令牌鉴权已经是默认的基础功能
  • 但某些场景,仅有鉴权是不够的,一些比较重要的数据,一旦泄露将会导致很严重的后果
  • 所以在此之外,还需要一个针对请求报文加密解密的工具,下面我们就来看一下这个功能如何使用

依赖引用

<dependency>
    <groupId>org.springblade</groupId>
    <artifactId>blade-starter-api-crypto</artifactId>
</dependency>

加密解密支持

  • 可进行加密的方式有:
      • AES(@ApiEncryptAes
      • DES(@ApiEncryptDes
  • 可进行解密的方式有:
      • AES(@ApiDecryptAes
      • DES(@ApiDecryptDes

注解说明

一、解密(用于请求参数)

@ApiDecryptAes@ApiDecryptDes@ApiDecryptRsa,注解 secretKey 可配置当前使用的私钥,优先于全局的配置。

可使用范围:

  1. 方法参数(用于get、post 的 url 参数),可配置统一的url变量名。base64 的 json 数据。
  2. 方法,用于(post 的 body)
  3. 类,表示整个控制器的(post 的 body)用于加密。

二、 加密(用于响应数据)

@ApiEncryptAes@ApiEncryptDes@ApiEncryptRsa,注解 secretKey 可配置当前使用的私钥,优先于全局的配置。

可使用范围:

  1. 方法,用于响应的 body加密。
  2. 类,表示整个控制器的响应的 body加密。

配置说明

配置项默认值说明
blade.api.crypto.enabletrue是否开启 api 签名
blade.api.crypto.param-namedataurl的参数签名,传递的参数名。例如:/user?data=签名后的数据
blade.api.crypto.rsa-private-keyrsa 私钥
blade.api.crypto.aes-keyaes 密钥
blade.api.crypto.des-keydes 密钥

注意:代码中的文本转换和签名均采用的 utf-8 字符集。

本模块需要开启jacksontext-plain 的支持。

#blade配置
blade:
  #接口配置
  api:
    # 报文加密配置
    crypto:
      # 启用报文加密配置
      enabled: true
      # 使用AesUtil.genAesKey()生成
      aes-key: "O2BEeIv399qHQNhD6aGW8R8DEj4bqHXm"
      # 使用DesUtil.genDesKey()生成
      des-key: "jMVCBsFGDQr1USHo"
  #jackson配置
  jackson:
    # 支持text文本请求,与报文加密同时开启
    support-text-plain: true