有做过开放平台的同学肯定知道,对外的 API 都要做签名校验,防止重放等来保证安全性。既然是统一地校验,那就没必要让每个开发接口的同学都去手动的进行校验,这个时候我们需要统一进行签名的校验和重放的校验。
今天给大家推荐一个 API 校验的框架,通过注解和切面的方式自动进行签名校验,并且支持自定义算法,使用简单,我强调一下,大家如果要用于自己的项目中,可以下载源码稍微改造下,因为我觉得还有些地方没有处理好,当然大家可以借鉴这个项目的思路,还是不错的。
集成框架
可以直接使用作者已经上传了的 jar 包,当然你也可以自己下载源码编译。
<dependency>
<groupId>cn.oever</groupId>
<artifactId>api-signed</artifactId>
<version>0.0.1</version>
</dependency>
添加配置信息,主要配置加密算法和 Redis 信息,因为这个项目用到了 Redis 做防止重放。
server:
port: 8080
oever:
signature:
time-diff-max: 300
algorithm: HmacSHA1
spring:
redis:
host: 127.0.0.1
port: 6379
password:
time-diff-max:调用方与服务器时间戳允许的最大差值,单位秒,默认值 10 秒。时间戳校验肯定会出现客户端和服务端不一致的情况,我们允许一定的差值,超过了就证明是过期的请求