无法理解 IdentityTokenLifetime 以及我的 JWT 持续多长时间
Unable to understand IdentityTokenLifetime and how long my JWT lasts
我无法理解 JWT 令牌的有效期。
- IdentityTokenLifetime(身份令牌的生命周期,以秒为单位(默认为 300 秒/5 分钟)
= 120 / 60 = 2 分钟
IdentityTokenLifetime
的目的是什么?
- AccessTokenLifetime(访问令牌的生命周期,以秒为单位(默认为 3600 秒/1 小时)
= 120 / 60 = 2 分钟
- SlidingRefreshTokenLifetime(刷新令牌的滑动生命周期,以秒为单位。默认为 1296000 秒/15 天)
= 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"]
}
}
};
根据您的示例,身份验证成功后,将创建以下令牌:
- 刷新 300 秒后过期的令牌。值TokenExpiration.Absolute表示Refresh Token不会被刷新。这通常太短了。刷新令牌通常会持续数天。刷新令牌过期后,将无法刷新更多令牌,用户将需要再次进行身份验证。
- 120 秒后过期的访问令牌。如果刷新令牌没有过期,将创建一个新的访问令牌。
- 120 秒后过期的身份令牌。如果刷新令牌没有过期,将创建一个新的身份令牌。
要获得每个令牌的生命周期(以分钟为单位),将秒数除以 60。
我无法理解 JWT 令牌的有效期。
- IdentityTokenLifetime(身份令牌的生命周期,以秒为单位(默认为 300 秒/5 分钟)
= 120 / 60 = 2 分钟
IdentityTokenLifetime
的目的是什么?
- AccessTokenLifetime(访问令牌的生命周期,以秒为单位(默认为 3600 秒/1 小时)
= 120 / 60 = 2 分钟
- SlidingRefreshTokenLifetime(刷新令牌的滑动生命周期,以秒为单位。默认为 1296000 秒/15 天)
= 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"]
}
}
};
根据您的示例,身份验证成功后,将创建以下令牌:
- 刷新 300 秒后过期的令牌。值TokenExpiration.Absolute表示Refresh Token不会被刷新。这通常太短了。刷新令牌通常会持续数天。刷新令牌过期后,将无法刷新更多令牌,用户将需要再次进行身份验证。
- 120 秒后过期的访问令牌。如果刷新令牌没有过期,将创建一个新的访问令牌。
- 120 秒后过期的身份令牌。如果刷新令牌没有过期,将创建一个新的身份令牌。
要获得每个令牌的生命周期(以分钟为单位),将秒数除以 60。