我开始使用 ASOS (AspNet.Security.OpenIdConnect.Server) 框架进行基于令牌的身份验证。
我已经完成了访问令牌的生成和检索,现在正转到刷新令牌位。
我的问题是:
- 我应该如何存储刷新令牌服务器端?
- 我是否应该将 clientID 以及经过哈希处理和加盐的刷新令牌存储在数据库中(以及实用程序字段,例如到期日期)?
- 如果我的 API 的用户只有一个 clientID 和 secret,但同时执行许多调用,那么预期的行为是什么(例如,假设他们希望在多台机器上扩展客户端以获得更好的吞吐量)。
- 具体来说,我的意思是如果客户端的访问令牌中的 1 个已过期,但它们的刷新令牌也已过期怎么办?当然他们可以去令牌端点同时获取一个新的访问令牌和刷新令牌,但是那个clientID的其他实例呢?假设它们的代码是相同的(即它们不共享刷新令牌的知识),每个实例还将继续请求新的访问和刷新令牌。
- 如果您为 clientID 存储单个刷新令牌,您最终会过度请求刷新令牌,可能每次访问令牌过期时,这是不可取的。
- 如果您为一个客户端存储多个刷新令牌,有多少是一个合理的数字?
另外,撤销刷新令牌的常见过程是什么?就像从存储它的任何地方删除它一样简单吗?
谢谢。