由于HTTP协议是开放的,能够任人调用。因此,若是接口不但愿被随意调用,就须要作访问权限的控制,认证是好的用户,才容许调用API。html
目前主流的访问权限控制/认证模式有如下几种:web
1),Bearer Token(Token 令牌)算法
定义:为了验证使用者的身份,须要客户端向服务器端提供一个可靠的验证信息,称为Token,这个token一般由Json数据格式组成,经过hash散列算法生成一个字符串,因此称为Json Web Token(Json表示令牌的原始值是一个Json格式的数据,web表示是在互联网传播的,token表示令牌,简称JWT)json
JWT分为三部分:api
第一部分:头部安全
{服务器
"typ" : "JWT", (typ:类型)网络
"alg" : "HS256" (alg:算法,HS256表示哈希算法的mac值。SHA256/HmacSHA256,SHA256表示直接加密,HmacSHA256表示用秘钥进行加密。SHA(Secure[sɪˈkjʊə(r)] Hash Algorithm [ˈælgərɪðəm],安全散列算法)post
HMAC(Hash Message Authentication [ɔ:ˌθentɪ'keɪʃn] Code,散列消息鉴别码))测试
}
第二部分(Claim正文部分)
{
"iss" : "joe",(issuer,发布者)
"exp": 1300819380,(expiration[ˌekspəˈreɪʃn] time 过时时间,毫秒数计算)
"http://example.com/is_root" :true(主题)
}
第三部分:签名(将上面的两个部分组合在一块儿+本地信息作的一个的签名(头部在前)
网络解释:签名是把header和payload(载荷)对应的json结构进行base64url编码以后获得的两个串,用英文句点号拼接起来,而后根据header里面alg指定的签名算法生成出来的。
https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-19
1,令牌的好处:避免在使用中不断的输入帐号和密码,比较安全
2,若是要测试带token的接口,首先要进行登陆,登陆成功会有个token信息,向api接口发送请求的时候必须带上这个token,故须要作2次请求(1,登陆,拿到token 2,正式对接口进行测试)
这个时候头部会多一个authorization
authorization可能在头部,也可能直接跟在请求行里面
http://www.xxx.com/ada?token=xxxxx
要么是用post请求,而后放在参数里面
3,注意点:
1),token通常有时间限制。测试前须要跟开发确认token能够用多久,何时算token失效
2),token放在哪儿,怎么传回去,须要有开发文档,或者咨询开发,登陆成功返回的token须要了解从什么地方获取(能够经过录制进行查看)