Identity Server 4 访问令牌生命周期已过期

Identity Server 4 Access Token Lifetime is expiring beyond its lifetime

我已经为测试设置了访问和刷新令牌的生命周期。现在,我想知道为什么访问令牌没有遵循其生命周期并且在刷新令牌生命周期之前仍然有效?我不确定我是否设置正确,但这是我配置令牌生命周期的方式:

            var accessTokenLifetime = 300;
            var absoluteRefreshTokenLifetime = 600;

            resultClient = new Client
            {
                AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
                AllowOfflineAccess = true,
                IdentityTokenLifetime = accessTokenLifetime,
                AccessTokenLifetime = accessTokenLifetime,
                UpdateAccessTokenClaimsOnRefresh = true,
                RefreshTokenUsage = TokenUsage.OneTimeOnly,
                RefreshTokenExpiration = TokenExpiration.Absolute,
                AbsoluteRefreshTokenLifetime = absoluteRefreshTokenLifetime
            };

注意:我删除了那里的一些属性。

有什么想法吗?

客户端默认包含 5 分钟的 ClockSkew,以支持不同服务中的时钟不同的情况。

您可以在您的客户端应用程序中的 Startup.ConfigureServices 中设置它,像这个例子来接受 1 分钟的偏差。如果愿意,您也可以将其设置为零。

.AddMyJwtBearer(options =>
{
    options.TokenValidationParameters.ClockSkew = TimeSpan.FromMinutes(1);
    ...