【问题标题】:Is it necessary to persist refresh token in database是否需要在数据库中保留刷新令牌
【发布时间】:2018-10-26 19:05:33
【问题描述】:

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

如果我在 20 分钟内或访问令牌到期之前刷新访问令牌,则刷新令牌刷新访问令牌并按预期工作,但在访问令牌到期后刷新令牌不刷新访问令牌并引发 invalid_grant 错误。

因为我没有在数据库中保存刷新令牌,我在谷歌上搜索但答案很混乱。

谁能告诉我:

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

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

谢谢。

您的回复对我很有价值。

【问题讨论】:

    标签: c# asp.net-mvc oauth-2.0 identityserver4 identity


    【解决方案1】:

    当在本地运行 IdentityServer4 并且“开箱即用”时,刷新令牌之类的东西不会持久化,这在开发的早期阶段通常没问题。

    但是,当您计划将身份提供程序部署到服务器时,无论如何您都需要一个可操作的存储(用于存储授权、用户同意等)。
    此操作存储还可以存储刷新令牌和引用令牌(在 IdentityServer4 docs 中阅读)。

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

    您还可以从您的终端撤消令牌,从而使该访问令牌的后续 API 调用失败,并且还有一些引人注目的用例。

    【讨论】:

    • 谢谢。是的,现在我正在存储令牌。
    猜你喜欢
    • 1970-01-01
    • 2019-12-29
    • 2014-01-20
    • 2017-02-12
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2015-11-10
    相关资源
    最近更新 更多