【发布时间】:2021-03-16 16:08:35
【问题描述】:
我正在使用 .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 表,似乎对于每个刷新的访问令牌,都存储了相同的 CreationTime 和 Expiration date:
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
我期望的是,当我请求一个新的访问令牌时,显然新的刷新令牌也会获得一个新的到期日期。
有人知道我是否缺少特定设置或如何解决此问题?
【问题讨论】:
标签: c# .net .net-core identityserver4 refresh-token