开放API接口签名验证
我们开放的api接口如果不做验证,完全暴露在外面是极其不安全的,所以我们要把我们的接口进行签名。
那签名有什么意义呢?
1、保证数据未被篡改
2、请求来源身份合法性
3、请求的唯一性 (不可复制)
那我们该如何实施呢:
1、首先我们得给客户端分配对应的key和secret
2、客户端访问数据接口之前需要用md5加密算法进行一次签名,签名内容是把我们提交的值转换成json字符串(用其他格式组织参数也行,反正客户端和服务端用同样的组织方式就行)加上我们的secret和时间戳一起签名,注意生成的签名需要生成大写字母。
3、访问接口的时候需要提交我们签名参数 提交的值 和时间戳三个一起提交
4、api服务端进行验证 首先通过key查询到客户端的secret ,然后验证时间戳是否过期,最后验证签名内容是否一致。如果签名一致的情况下说明数据未被篡改,同时表明了身份的合法性。