我知道访问令牌是短暂的,因为它们在没有访问数据库的情况下被验证,而刷新令牌是长期存在的并且是针对数据库进行验证的。
我不明白为什么最初通过发送授权授权获取访问令牌,以及稍后通过发送刷新令牌来区分原因。
从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 +---------------+
答案 0 :(得分:2)
我认为刷新令牌比初始代码更安全的原因。
此规范可以 不要求使用TLS,因为在撰写本文时, 要求客户部署TLS对许多人来说是一个重大障碍 客户开发者。
但需要token endpoint的TLS,用于获取刷新令牌:
由于对令牌端点的请求导致传输 明文凭证(在HTTP请求和响应中), 授权服务器必须要求使用TLS
这会使初始代码不安全,并且应尽快使其失效或检测到多次使用时失效。要获取令牌,您仍然需要客户端密钥,但刷新令牌更安全,可以重复使用。