接口鉴权方式

当第三方访问我们的接口的时候,我们需要对传参进行参数校验,思路就是
1、给第三方一个appid和app_secret。第三方首先根据app_id和时间戳timestamp和secret(secret = MD5(app_id+app_secret+timestamp)),调我们的接口获取accessToken。
注:accessToken有效性为2小时。

2、第三方每次请求我们的接口的时候,都必须带上accessToken
3、第三方需要对每次请求的参数,sign签名生成。
sign签名生成规则:

MD5(将所有参数包括accesstoken进行key进行小写再升序排列+app_secret)
所有参数名称加密前必须转小写,根据参数名称字典升序排列后进行拼接,最后加上app_secret(由接口方提供)然后进行MD5加密(app_secret如:D300A6359BFF9592982A6AC996DAB4EC,access_token如:s4eLwRJ8UtMS1G)
例如:
参数access_token=s4eLwRJ8UtMS1G 参数b = 222 参数c = 333 根据参数名称排序后得到:access_token=s4eLwRJ8UtMS1G&b=222&c=333,最后追加app_secret参数后得到待加密字符串如下:
sign=MD5(access_token=s4eLwRJ8UtMS1G&b=222&c=333D300A6359BFF9592982A6AC996DAB4EC)
最后转成32位的16进制字符串,生成大写的MD5串,即为签名sign
注:sign中的value是对象的形式则转成如下:user={“name”:“张sahng”,“age”:20}
接口鉴权方式_第1张图片
如果sign中的value是集合的形式则转成如下:
list_user=[{“name”:“张sahng”,“age”:20},{“name”:“lisidasd”,“age”:30}]
接口鉴权方式_第2张图片

4、每次请求的时候,除了带上基本的接口参数外还需要带上accessToken和生成的sign。目的是,传到后台服务器,参数首先会经过拦截器,拦截器获取accessToken和sign和参数。

  1. 首先去查accessToken时候过期,或者是否存在,不存在或者过期则返回错误信息
  2. 再根据参数生成sign。生成的sign与传来的sign去比较,是否一致,一致则说明参数没有被篡改,则通过,不一致,则报错。

5、具体代码实现,见下一篇

你可能感兴趣的:(接口校验,java)