Bearer Token(Token 令牌)

定义:为了验证使用者的身份,需要客户端向服务器端提供一个可靠的验证信息,称为Token,这个token通常由Json数据格式组成,通过hash散列算法生成一个字符串,所以称为Json Web Token(Json表示令牌的原始值是一个Json格式的数据,web表示是在互联网传播的,token表示令牌,简称JWT)

JWT分为三部分:

第一部分header:头部

1
2
3
4
{
"typ" : "JWT",
"alg" : "HS256"
}

typ类型

alg算法,HS256表示哈希算法的mac值。SHA256/HmacSHA256,SHA256表示直接加密,HmacSHA256表示用秘钥进行加密。SHA Hash Algorithm,安全散列算法, HMAC(Hash Message Authentication Code,散列消息鉴别码)

第二部分payload:(Claim正文部分)Base64加密的

1
2
3
4
5
{
"iss" : "joe",
"exp": 1300819380,
"http://example.com/is_root" :true
}

JWT官方规定了下面几个官方的字段供选用:

1
2
3
4
5
6
7
iss (issuer):签发人
exp (expiration time):过期时间,毫秒数计算
sub (subject):主题
aud (audience):受众
nbf (Not Before):生效时间
iat (Issued At):签发时间
jti (JWT ID):编号

第三部分:签名(将上面的两个部分组合在一起+本地信息做的一个的签名(头部在前)

签名是把headerpayload(载荷)对应的json结构进行base64url编码之后得到的两个串,用英文句点号拼接起来,然后根据header里面alg指定的签名算法生成出来的。

好处

  • 1.避免在使用中不断的输入账号和密码,比较安全
  • 2.如果要测试带token的接口,首先要进行登录,登录成功会有个token信息,向api接口发送请求的时候必须带上这个token,故需要做2次请求(1.登录,拿到token;2.正式对接口进行测试)

注意点

  • 1.token一般有时间限制。测试前需要跟开发确认token可以用多久,什么时候算token失效
  • 2.token放在哪儿,怎么传回去,需要有开发文档,或者咨询开发,登录成功返回的token需要了解从什么地方获取