是否有必要在数据库中保留刷新令牌



我正在使用资源所有者密码流,我成功地访问了令牌和刷新了令牌,并且我没有在数据库中保留任何令牌,本地一切都很好。但当我在生产中部署身份服务器时,刷新令牌并没有按预期工作。我已经设置了访问令牌到期时间20分钟和刷新令牌到期时间7天。

如果我在20分钟内或访问令牌到期前刷新访问令牌,则刷新令牌刷新访问令牌并按预期工作,但在访问令牌到期后刷新令牌不刷新访问令牌并且抛出invalidgrant错误。

由于我没有在数据库中保存刷新令牌,我在谷歌上搜索了一下,但答案很混乱。

有人能告诉我吗:

当刷新令牌在本地正常工作而不存储时,我需要存储它吗?如果是,我使用mysql作为数据库的任何实现参考。

或者其他我需要看的东西。

谢谢。

你的回复对我来说很有价值。

在本地和"开箱即用"运行IdentityServer4时,刷新令牌之类的东西不会持久化,这在开发的早期阶段通常很好。

但是,当计划将Identity Provider部署到服务器时,您无论如何都需要一个操作存储(用于存储授权、用户同意等(。
此操作存储还可以存储刷新令牌和引用令牌(请参阅IdentityServer4文档(。

在IdP上设置令牌存储是个好主意。存储令牌打开了清除令牌吊销的大门。客户端应用程序中干净实现的注销将调用IdP上的令牌吊销端点。这是因为当用户注销时,不再需要访问令牌和刷新令牌。

您还可以从您的终端撤销令牌,使后续API调用该访问令牌失败,并且也有一些令人信服的用例。

最新更新