无法理解 IdentityTokenLifetime 以及我的 JWT 持续多长时间

Unable to understand IdentityTokenLifetime and how long my JWT lasts

我无法理解 JWT 令牌的有效期。

= 120 / 60 = 2 分钟

IdentityTokenLifetime 的目的是什么?

= 120 / 60 = 2 分钟

= 300 / 60 = 5 分钟

从奇怪的摘要评论信息来看,我真的不明白 JWT 令牌的寿命是多少分钟。

public static IEnumerable<Client> GetClients(IConfiguration configuration) =>
    new List<Client>
    {
        new()
        {
            ClientName = configuration["AuthConfiguration:ClientName"],
            ClientId = configuration["AuthConfiguration:ClientId"],
            ClientSecrets = { new Secret(configuration["AuthConfiguration:ClientSecret"].Sha256()) },

            AllowedGrantTypes = GrantTypes.ResourceOwnerPasswordAndClientCredentials,
            AccessTokenType = AccessTokenType.Jwt,
            AllowOfflineAccess = true,

            AccessTokenLifetime = 120,
            IdentityTokenLifetime = 120,
            UpdateAccessTokenClaimsOnRefresh = true,
            SlidingRefreshTokenLifetime = 300,
            RefreshTokenExpiration = TokenExpiration.Absolute,
            RefreshTokenUsage = TokenUsage.OneTimeOnly,
            AlwaysSendClientClaims = true,

            AllowedScopes =
            {
                IdentityServerConstants.StandardScopes.OpenId,
                IdentityServerConstants.StandardScopes.Profile,
                IdentityServerConstants.StandardScopes.OfflineAccess,
                configuration["AuthConfiguration:ApiName"]
            }
        }
    };

根据您的示例,身份验证成功后,将创建以下令牌:

  1. 刷新 300 秒后过期的令牌。值TokenExpiration.Absolute表示Refresh Token不会被刷新。这通常太短了。刷新令牌通常会持续数天。刷新令牌过期后,将无法刷新更多令牌,用户将需要再次进行身份验证。
  2. 120 秒后过期的访问令牌。如果刷新令牌没有过期,将创建一个新的访问令牌。
  3. 120 秒后过期的身份令牌。如果刷新令牌没有过期,将创建一个新的身份令牌。

要获得每个令牌的生命周期(以分钟为单位),将秒数除以 60。