2022年1月18日星期二

Java接口签名(Signature)实现方案

Java接口签名(Signature)实现方案

Java接口签名(Signature)实现方案

大家好,我是程序员田同学!

今天上午收到一个需求,针对当前的系统开发一个对外开放的接口。

既然是对外开放,那么调用者一定没有我们系统的Token,就需要对调用者进行签名验证,签名验证采用主流的验证方式,采用Signature 的方式。

一、要求

下图为具体要求

image-20220118171527945

二、流程

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

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

  3、加入流水号noncestr(防止重复提交),至少为10位。针对查询接口,流水号只用于日志落地,便于后期日志核查。 针对办理类接口需校验流水号在有效期内的唯一性,以避免重复请求。

  4、加入signature,所有数据的签名信息。

image-20220118171245456

三、实现

简单来说,调用者调用接口业务参数在body中传递,header中额外增加四个参数signature、appkey、timestamp、noncestr。

我们在后台取到四个参数,其后三个参数加上调用者分配的appSecret,使用字典排序并使用MD5加密后与第一个参数signature进行比对,一致既表示调用者有权限调用。

以下代码为接口验证签名的demo实现:

 //引用jackson依赖   @Autowired   private ObjectMapper objectMapper;     @Value("${appsecret}")   private String appSecret;      /**    * 验证签名    * @param preInfoItem    * @return    */   boolean checkSignature(PreInfoItem preInfoItem) throws JsonProcessingException, IllegalAccessException {      String signature="signature";      String appkey="appkey";      String timestamp="timestamp";      String noncestr="noncestr";      HttpServletRequest request.............

原文转载:http://www.shaoqun.com/a/1450748.html


河源镜花缘门票优惠政策:(儿童+老人+学生等):http://www.30bags.com/a/617343.html
深圳海上世界国庆摇摆放FUN松文化节时间表:http://www.30bags.com/a/707398.html
深圳礼品展展品范围(有什么):http://www.30bags.com/a/740402.html
vm:https://www.ikjzd.com/w/2951
ttd:https://m.ikjzd.com/w/2149
cares:https://www.ikjzd.com/w/1302
Allegro官网网址,Allegro平台好不好:http://www.kjdsnews.com/a/761428.html
日本Rakuten怎么样,rakuten平台有哪些特点:http://www.kjdsnews.com/a/761429.html
YesWelder打造DTC出海品牌实例:电商平台+独立站:http://www.kjdsnews.com/a/761430.html

没有评论:

发表评论