访问令牌和刷新令牌 【转】
原文:https://www.jianshu.com/p/bdba30dd1ec0
1. token化的协议过程
image2. 当用户登陆的时候,生成access_token 和 refresh_token,并返回给APP
当 access_token 失效时,App使用 refresh_token 来请求刷新token。
如果 refresh_token过期,需要用户重新登陆。也就是说,用户每一次登陆的时候 refresh_token都会重新更改
需要注意的是有一种双令牌刷新会这样设置。当每一次使用 refresh_token 去完成更新 access_token 的之后,refresh_token 的时效都会重置
例如: access_token 的时效设置为1个小时。但是 refresh_token 时效是 2天。假如1小时过后,access_token失效了,当客户端携带着refresh_token 去请求后端,获取新的access_token 之后,会把refresh_token 的时效重置为2天。
所以直到用户连续两天没再使用过app的时候,app才会要求用户重新登陆,重新获取这两个令牌
3. token验证
image4. 刷新token
image5. 原因
-
客户端缓存用户的密码,容易受到黑客攻击,如果使用了token机制,就算黑客盗用了用户的 access_token 和 refresh_token,只需要重新登陆,就可以让被盗的token失效
-
如果访问令牌受到劫持,由于它存在是短时间的,所以对访问令牌的滥用是控制再一定的范围内的。
如果刷新令牌被劫持,基本上无害的,攻击者需要得到 clien_id, secrect_id(通常存储在服务器上),再加上刷新令牌才可以进行操作
网友评论