我理解使用访问/刷新令牌的身份验证过程的工作方式如下:
管理/撤销访问权限的流程:
数据库交互: 只需要刷新令牌。即频率取决于access_token的生命周期。
用户体验:
时需要登录安全隐患:
没有refresh_token: +没有长期存在的漏洞 -Bad UX。用户需要经常登录
现在我想知道为什么我们不能只使用access_token作为refresh_token:
现在UX / security / DB_call_frequency似乎完全相同。那么为什么我们需要一个单独的refresh_token?
我能看到的唯一一个论点就是将它们分开会降低refresh_token被盗的风险,因为它的发送频率较低。
答案 0 :(得分:0)
创建新的access_token并为旧令牌设置已撤销。 (任选地, 到期后只允许x时间。这相当于 refresh_token的过期日期
您想通过交换用户名和密码再次执行此操作吗?
如果是,那么用户需要再次登录。您可以使用仅发送访问令牌的客户端凭据授予https://tools.ietf.org/html/rfc6749#section-4.4或隐式流https://tools.ietf.org/html/rfc6749#section-4.2,这些流不会发送刷新令牌。如果您可以发送用户名和密码,则可以使用客户端凭据授予,并在每次过期时请求访问令牌。