公共 API 通过设计 token 和 sign 等方法,保证接口安全.
基于 token
客户端通过服务器设置的规则访问特定 url 获取 token
1 | http://host/api/v1/token?app_id=xxx&app_secret=xxx |
之后访问别的 API 接口可以通过参数上传 access_token 来保证访问
1 | http://host/users/1?access_token=kkIs5V9uTri6 |
基于 sign 和 token, timestamp
使用 sign 加密上传参数来保证数据的一致性, 而通过 timestamp 与服务器当前时间戳比较防止恶意调用接口.
sign 签名算法
生成加密算法用于调用接口
1 | # 按一定的顺序, 规则加密, 全部大写或全部小写 |
调用接口
加密后调用 api 接口
1 | # 调用更新用户信息的接口 |
服务器鉴定
获取客户端的请求数据, 服务器开始鉴定
- 判断是否包含参数 token, timestamp, sign
- 判断参数中的时间戳的服务器的时间戳间隔(超过 10 分钟失效, 这个时间用户自己设置)
- 判断 token 是否过期
- 服务器通过相同的签名算法加密后与客户端 sign 作比较
经过一下判断来确定当前请求是否有效, 如果全部通过就可以返回数据了