我正在使用资源所有者密码流,并且我成功访问了令牌和刷新令牌,但是我没有在数据库中持久保存任何令牌,并且本地一切正常。 但是,当我在生产中部署身份服务器时,刷新令牌无法按预期工作。 我已将访问令牌的过期时间设置为20分钟,并刷新了令牌的过期时间为7天。
如果我在20分钟内或访问令牌到期之前刷新访问令牌,则刷新令牌刷新访问令牌并按预期工作,但访问令牌到期后刷新令牌不会刷新访问令牌并抛出invalid_grant错误。
由于我没有在数据库中保存刷新令牌,因此我在Google上进行了搜索,但答案很混乱。
所以任何人都可以告诉我:
当刷新令牌在本地可以正常工作而不存储时,我是否需要存储它?如果是,则有任何实现参考,我正在使用mysql作为数据库。
或者我需要看的其他东西。
谢谢。
您的回应对我来说很有价值。
答案 0 :(得分:0)
在本地运行“开箱即用” IdentityServer4时,诸如刷新令牌之类的东西不会持久存在,通常在开发的早期阶段就可以了。
但是,当计划将身份提供程序部署到服务器时,无论如何,您都将需要一家运营商店(用于存储授权,用户同意等)。
该运营商店还可以存储刷新令牌和参考令牌(在IdentityServer4 docs中进行读取)。
在IdP上设置令牌存储是一个好主意。存储令牌打开了清除令牌撤销的门。客户端应用程序中明确实现的注销将在您的IdP上调用令牌吊销终结点。这是因为当用户注销时,不再需要访问令牌和刷新令牌。
您还可以从一端撤消令牌,从而使该访问令牌的后续API调用失败,并且还有一些引人注目的用例。