首页 > 解决方案 > Identity Server 4 Access Token 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
            };

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

有什么想法吗?

标签: identityserver4

解决方案


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

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

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

推荐阅读