gpt4 book ai didi

c# - JwtSecurityToken 是否有最短到期时间?

转载 作者:行者123 更新时间:2023-12-05 02:17:29 26 4
gpt4 key购买 nike

在 token 验证中,我检查了 token 的生命周期,它是13:07:10。当我运行验证时,时间是 13:12,验证成功。 为什么?

当大约是 13:15 时,我再次运行验证,结果如预期的那样抛出了异常。

token 是否有最短到期时间?


创建 token :

var token = new JwtSecurityToken(
issuer: token_issuer,
audience: token_audience,
claims: claims,
expires: DateTime.Now.AddSeconds(5),
signingCredentials: creds
);

验证 token :

private static bool ValidateToken(string token)
{
try
{
TokenValidationParameters validationParameters = new TokenValidationParameters
{
IssuerSigningKey = new SymmetricSecurityKey(token_salt),
ValidAudience = token_audience,
ValidIssuer = token_issuer,
RequireExpirationTime = true
};

ClaimsPrincipal principal = new JwtSecurityTokenHandler().ValidateToken(token_last, validationParameters, out SecurityToken validatedToken);

return true;
}
catch(SecurityTokenExpiredException ex)
{

}

return false;
}

最佳答案

这是由于 ClockSkew token 验证参数,它允许提供一个缓冲区来解决发布 JWT 的服务器和验证它的服务器之间的时钟差异。

在 .NET Core/5+ 中,您可以在 Startup 的 JwtBearer 配置中的 TokenValidationParameters 对象中更改其值,如下所示。其默认值为 300 秒或 5 分钟。

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "https://some-jwt-token-issuer.com";
options.TokenValidationParameters = new TokenValidationParameters()
{
// Set the below to eliminate the skew
ClockSkew = TimeSpan.Zero
};
});

关于c# - JwtSecurityToken 是否有最短到期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47754556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com