我在 Azure 中有一个 Thinktecture 的 Identity Server v3 实例,它作为 WebApp 托管。一般来说,它按预期工作,但我在尝试通过令牌身份/连接/令牌端点和refresh_token授权类型使用刷新令牌时遇到一些问题。我有一个使用授权代码流的客户端,这是与有关此客户端的刷新令牌选项相关的设置:
// refresh token options
AccessTokenType = AccessTokenType.Jwt,
AccessTokenLifetime = 3600,
RefreshTokenUsage = TokenUsage.OneTimeOnly, // Every time generates new refresh token. Not only access token.
RefreshTokenExpiration = TokenExpiration.Sliding,
SlidingRefreshTokenLifetime = 1296000
对于使用过此功能的人,很明显我使用 JWT 令牌,并且我的访问令牌有效期为 1 小时,之后,无需再次登录 Identity Server,我可以使用刷新令牌并获取新的访问和刷新令牌. 我的刷新令牌必须在 15 天(1296000 秒)内有效。实际发生的是它没有按预期工作。出于某种原因,当我决定在前一个半小时后调用我的 REST API(身份服务器的依赖方)时,我得到了invalid_grant响应。
我决定对其进行一些测试,并让我的访问令牌在 2 分钟内过期,我的刷新令牌在 10 分钟内过期。好吧,然后我尝试在访问令牌过期后 1、2、3 分钟拨打电话,它按预期工作。我真的不想用 1 小时访问令牌进行这种测试,所以这就是为什么我决定在这里询问是否有人以前经历过这种情况。