【发布时间】:2020-12-18 15:05:39
【问题描述】:
我有一个通过后端实现 JWT 身份验证的移动应用。访问令牌是短暂的 (1h) 并且不存储在后端。现在是刷新令牌:
-
如果刷新令牌过期,则意味着用户将被定期注销,这从业务角度来看是非常不可取的,它可能会损害用户保留率。有没有办法在不削弱安全性的情况下避免这种情况,例如使刷新令牌“永恒”?
-
存储和清理可防止未使用令牌累积的刷新令牌表的最佳方法是什么?假设我有以下表结构:
user_id、device_id、refresh_token。如果策略是使刷新令牌永不过期,那么使它们失效的唯一方法是在用户注销时。但是,用户也可以删除应用程序、丢失或损坏设备,或者出于任何原因更改其device_id。我能想到的一种解决方案是有一个refreshed_at时间戳,这将允许在几个月不使用后使令牌失效。还有其他已知的技巧吗? -
假设我在刷新访问令牌时除了刷新令牌之外还使用了共享密钥字符串,我的理解是否正确,即如果所有 3 个都受到损害(访问令牌、刷新令牌和共享密钥),我对此无能为力吗?
refreshAPI 调用的最佳做法是什么?
【问题讨论】:
标签: authentication oauth jwt refresh-token