【发布时间】:2018-04-04 06:08:04
【问题描述】:
我知道访问令牌是短暂的,因为它们是在不访问数据库的情况下进行验证的,而刷新令牌是长期存在的,并且是针对数据库进行验证的。
我不明白为什么最初通过发送授权授予获取访问令牌和后来通过发送刷新令牌之间存在差异。
从RFC 6749看这张图,为什么客户端不简单地在步骤(G)中重新发送授权授予?为什么需要刷新令牌?
+--------+ +---------------+
| |--(A)------- Authorization Grant --------->| |
| | | |
| |<-(B)----------- Access Token -------------| |
| | & Refresh Token | |
| | | |
| | +----------+ | |
| |--(C)---- Access Token ---->| | | |
| | | | | |
| |<-(D)- Protected Resource --| Resource | | Authorization |
| Client | | Server | | Server |
| |--(E)---- Access Token ---->| | | |
| | | | | |
| |<-(F)- Invalid Token Error -| | | |
| | +----------+ | |
| | | |
| |--(G)----------- Refresh Token ----------->| |
| | | |
| |<-(H)----------- Access Token -------------| |
+--------+ & Optional Refresh Token +---------------+
【问题讨论】:
-
tools.ietf.org/html/rfc6749#section-4.1.2 表示授权码不能多次使用。
-
@FlorentMorselli 所以在刷新令牌过期后,客户端必须获得新的授权授权?
-
是的。如果刷新令牌不再有效(过期、撤销...),那么您必须遵循整个流程。
标签: oauth-2.0 access-token refresh-token