欢迎光临散文网 会员登陆 & 注册

【Java项目】基于Spring AOP + Redisson技术实现接口简单鉴

2023-07-30 17:22 作者:美丽的程序人生  | 我要投稿

【Java项目接口签名技术实现】

概述

在为第三方系统提供接口的时候,肯定要考虑接口数据安全问题,比如数据是否被篡改,请求是否已经过时,请求是否允许重复提交等问题。

设计思路

因此接口签名主要解决如下几个问题:

1、前端请求必须在规定时间范围内才生效;

2、请求发起方必须是已经被授权的应用;

3、请求不能够被重复发起;

4、请求发起时传入的参数不能够被篡改。

接口签名规则

在header中加入4个参数:


第三方请求合法性

线下分配appid和appsecret,针对不同的调用方分配不同的appid和appsecret

单次请求失效性

加入timestamp(时间戳),5分钟内数据有效

请求判重

加入流水号(随机数)nonce(防止重复提交),约定为10位。 在有效期内的唯一性,为避免重复请求,放入缓存,5分钟过期

接口参数加密

加入sign,所有数据的签名信息,sign字段生成规则如下:

将RequestBody中的参数序列化为SortedMap<String, String>,所有key=value进行拼接,按照key字典序排序为一个字符串,然后进行MD5加密,org.springframework.util.DigestUtils.md5DigestAsHex()

验签逻辑

将appid、timestamp、nonce、sign 4个字段再次按照key字典序排序,然后进行MD5加密,org.springframework.util.DigestUtils.md5DigestAsHex(),得到字符串,再通过sun.misc.BASE64Encoder.encode(signStr),得到最终验签字符串。

【Java项目】基于Spring AOP + Redisson技术实现接口简单鉴的评论 (共 条)

分享到微博请遵守国家法律