客户端验签方案

方案一:固定的refresh_token

1,客户端登录后,获取access_token和refresh_token;
2,access_token失效后,通过refresh_token请求新的access_token,客户端获取新的access_token,服务器延长旧refresh_token的过期时间,客户端同步更新refresh_token的过期时间,refresh_token的值不变;
3,如果通过refresh_token请求新的access_token,检查到refresh_token过期,那么access_token失效,旧refresh_token也相继失效;
4,用户退出或者注销之后,access_token失效,旧refresh_token也相继失效;
5,重新登录,以此往复;

方案二:自动续期refresh_token – 业内标准

1,客户端登录后,获取access_token和refresh_token;
2,access_token失效后,通过refresh_token请求新的access_token,客户端获取新的access_token和refresh_token,并获取了新的access_token和refresh_token的过期时间,客户端同步更新;
3,如果通过refresh_token请求新的access_token,检查到refresh_token过期,那么access_token失效,旧refresh_token也相继失效;
4,用户退出或者注销、服务器强制让客户端退出的时候,refresh_token失效,access_token也会失效;
5,重新登录,以此往复;

方案三:限次刷新 + 有效期限

1,服务器端制定好refresh_token最大刷新次数和有效期;
2,客户端登录后,获取access_token和refresh_token;
3,access_token失效后,通过refresh_token请求新的access_token,服务器下发新的access_token ,但不会下发新refresh_token,只是记录了当前refresh_token的刷新次数加1;
4,按照3的步骤执行了多次刷新后,刷新次数超过了服务器端制定好refresh_token的最大刷新次数,那么refresh_token过期、access_token也相继过期;
5,和4并行 – 如果通过refresh_token请求新的access_token,检查到refresh_token过期,那么access_token失效,旧refresh_token也相继失效,这也是限次刷新+有效期限的token方案;
6,用户退出或者注销、服务器强制让客户端退出的时候,refresh_token失效,access_token也会失效;
7,重新登录,以此往复;

客户端传递模式:
access_token:
access_token以http请求放入header的形式传递,通常放在Authorization字段中。

GET /user/profile
Authorization: Bearer <access_token>

refresh_token:
refresh_token通常刷新access_token,以http请求,放在 HTTP 请求 body中。

POST /auth/refresh
Content-Type: application/json
----body----
{
  "refresh_token": "<refresh_token>"
}

Leave a Reply

Required fields are marked *