为什么 IdentityServer persistedgrants 中的 refresh-token 过期没有更新?
Why is the refresh-token expiration not renewed in IdentityServer persistedgrants?
我正在使用 .NET Core 和 IdentityServer4 创建访问令牌。这些访问令牌还包括一个刷新令牌,可用于请求新的访问令牌。由于一些用户报告说他们过早注销,我在本地环境中进行了测试。我将访问令牌生命周期设置为 10 秒,将刷新令牌生命周期设置为 30 秒。预期的行为是,只要您在 30 秒内请求新令牌,您就会一直保持登录状态。然后我每隔几秒发送一个请求。刷新令牌每 10 秒请求一个新的访问令牌。为此,我使用扩展方法“RequestRefreshTokenAsync”。但这仅适用于最大值。 3次:
04.12.2020 15:09:02 Using refresh token iCmtHJa5jllqTkwUexI9ZMLGN0RQhqvXljun6AgR31M.
04.12.2020 15:09:02 Success, new refresh token T0R8BWfNwkBzBh_yDKzhqerzgRgxY9OZ3jWLG951-hc.
04.12.2020 15:09:13 Using refresh token T0R8BWfNwkBzBh_yDKzhqerzgRgxY9OZ3jWLG951-hc.
04.12.2020 15:09:13 Success, new refresh token W29SlwHP318d4NFaqRS5ZTJAUG-ugYMBQrV6-g6v1rk.
04.12.2020 15:09:23 Using refresh token W29SlwHP318d4NFaqRS5ZTJAUG-ugYMBQrV6-g6v1rk.
04.12.2020 15:09:23 Error: invalid_grant
在我发现这一点之后,我还查看了 IdentityServer 的 persistedgrants table,似乎对于每个刷新的访问令牌,都存储了相同的创建时间和到期日期:
ocDMiwVpOJrcWh5LmEPgzDnn15TED5FpxSEpXsXDMzY= 2020-12-04 15:08:51.000000 2020-12-04 15:09:21.000000
i+NjVCnMUoobpnaINoLrCGcQrWHloIaAHC4NHWwGyK4= 2020-12-04 15:08:51.000000 2020-12-04 15:09:21.000000
d9HjtUszofxOEcnV7w95dhn54rl8QI2IRq8UMZlKr1Y= 2020-12-04 15:08:51.000000 2020-12-04 15:09:21.000000
我期望的是,当我请求新的访问令牌时,明显新的刷新令牌也会获得新的到期日期。
有人知道我是否缺少特定设置或如何解决这个问题吗?
我为解决此问题所做的工作是将您的刷新令牌设置为滑动到期。如果您在滑动到期之前请求新的访问令牌,则刷新令牌到期将被延长。这应该可以在您的身份服务器客户端设置中进行配置。在此处查看文档:http://docs.identityserver.io/en/release/topics/refresh_tokens.html
我正在使用 .NET Core 和 IdentityServer4 创建访问令牌。这些访问令牌还包括一个刷新令牌,可用于请求新的访问令牌。由于一些用户报告说他们过早注销,我在本地环境中进行了测试。我将访问令牌生命周期设置为 10 秒,将刷新令牌生命周期设置为 30 秒。预期的行为是,只要您在 30 秒内请求新令牌,您就会一直保持登录状态。然后我每隔几秒发送一个请求。刷新令牌每 10 秒请求一个新的访问令牌。为此,我使用扩展方法“RequestRefreshTokenAsync”。但这仅适用于最大值。 3次:
04.12.2020 15:09:02 Using refresh token iCmtHJa5jllqTkwUexI9ZMLGN0RQhqvXljun6AgR31M.
04.12.2020 15:09:02 Success, new refresh token T0R8BWfNwkBzBh_yDKzhqerzgRgxY9OZ3jWLG951-hc.
04.12.2020 15:09:13 Using refresh token T0R8BWfNwkBzBh_yDKzhqerzgRgxY9OZ3jWLG951-hc.
04.12.2020 15:09:13 Success, new refresh token W29SlwHP318d4NFaqRS5ZTJAUG-ugYMBQrV6-g6v1rk.
04.12.2020 15:09:23 Using refresh token W29SlwHP318d4NFaqRS5ZTJAUG-ugYMBQrV6-g6v1rk.
04.12.2020 15:09:23 Error: invalid_grant
在我发现这一点之后,我还查看了 IdentityServer 的 persistedgrants table,似乎对于每个刷新的访问令牌,都存储了相同的创建时间和到期日期:
ocDMiwVpOJrcWh5LmEPgzDnn15TED5FpxSEpXsXDMzY= 2020-12-04 15:08:51.000000 2020-12-04 15:09:21.000000
i+NjVCnMUoobpnaINoLrCGcQrWHloIaAHC4NHWwGyK4= 2020-12-04 15:08:51.000000 2020-12-04 15:09:21.000000
d9HjtUszofxOEcnV7w95dhn54rl8QI2IRq8UMZlKr1Y= 2020-12-04 15:08:51.000000 2020-12-04 15:09:21.000000
我期望的是,当我请求新的访问令牌时,明显新的刷新令牌也会获得新的到期日期。
有人知道我是否缺少特定设置或如何解决这个问题吗?
我为解决此问题所做的工作是将您的刷新令牌设置为滑动到期。如果您在滑动到期之前请求新的访问令牌,则刷新令牌到期将被延长。这应该可以在您的身份服务器客户端设置中进行配置。在此处查看文档:http://docs.identityserver.io/en/release/topics/refresh_tokens.html