open api
open api 是什么? Open API即开放API,也称开放接口 所谓的开放API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将自己的网站服务封装成一系列API(Application Programming Interface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,所开放的API就被称作OpenAPI(开放API)。 (摘自百科,主要为了说一下概念)
open api 设计常见问题
服务提供
通信方式设计
常见的设计是: 必备的有:app key 与 app secret 签名 可选的有: 企业ID, 业务ID。 这些可选的东西一般用来区分业务领域或者权限而存在,确保不同调用者领域与权限的隔离。
app key 与app secret 是我见过最常见,也是必然会出现的一个设计, 在我对接过的十多种API(阿里、腾讯、小米)中, 这这些都是必备的。
app key 的作用
主要是为了防止请求被篡改以及用户识别。一般一个 app key 是用于做用户识别的, 服务提供方一般会存放调用方的一些信息, 并可以通过这个App key 检索到。
app secret 的作用
app secret 主要是用来签名请求的, 签名过的请求如果被修改之后, 则签名就会发生变化,攻击者是不可能知道这个变化的结果的,这样可以有效防止攻击者的攻击。
一般来讲,会对如下领域进行签名:
- parameter (url 参数)
- header (请求头)
一般的流程如下:
- 用户在请求参数信息中加入时间信息
- 用户使用自己的 app secret 对请求进行签名
- 用户把签名的结果, app key 与其他参数一起放到请求里面传到服务提供方
- 服务方根据 app key找到自己存放的 app secret, 并对请求进行签名
- 比对签名信息是否一致, 不一致,则认认为请求受到了非法修改,直接拒绝服务。
- 校验时间信息, 确保时间信息是在允许的范围内, 否则拒绝提供服务。
如何颁发? 一般是由服务提供方生成这样的一个键值对, 并把键值对安全的递给调用方。 以后 app secret 不会出现在网络传输中,只会用于双方的签名校验。
数据格式与文档
- 服务地址, 需要准确无误的告诉服务提供方的调用地址
- 环境设置 (一般API提供方会提供线上与线下两种途径一个用来线上使用,一个用来调试)
- 参数规定 (对于一个Open API一般来讲参数都是固定的, 不能随意变动,否则会引起双方不小的争执)
- 结果格式 (结果格式,要写清楚所有出现的结