gpt4 book ai didi

c# - JwtSecurityToken 返回错误的过期时间

转载 作者:行者123 更新时间:2023-11-30 20:16:53 26 4
gpt4 key购买 nike

我需要检查我的 JwtSecurityToken 是否过期。

我正在使用 System.IdentityModel.Tokens.Jwt 库。

当我像这样创建一个 JwtSecurityToken 时:

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

并检查它的生命周期,我在当前时间后得到 2 小时。

我以这种方式检查生命周期(仅用于测试目的):

var lifeTime = new JwtSecurityTokenHandler().ReadToken(token).ValidTo;

我的验证方法:

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

var lifeTime = new JwtSecurityTokenHandler().ReadToken(token).ValidTo;

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

return true;
}
catch(Exception ex)
{

}

return false;
}

谁能解释发生了什么或者我做错了什么?


编辑(用于解释目的)

测试 1

  • 我设备的当前时间:10:06
  • 使用 expiration = DateTime.Now.AddSeconds(5);
  • token 的生命周期 = 12:06:10 并且类型 = UTC
  • 验证正常。

测试 2

  • 我设备的当前时间:10:16
  • 使用 expiration = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc).AddSeconds(5);
  • token 的生命周期 = 10:16:12 并且种类 = UTC
  • 验证失败:Microsoft.IdentityModel.Tokens.SecurityTokenExpiredException:IDX10223:生命周期验证失败。 token 已过期。有效时间:'12/11/2017 10:16:12' 当前时间:'12/11/2017 12:18:40'。

测试 3

  • 使用 expiration = DateTime.UtcNow.AddSeconds(5);
  • token 的生命周期 = 13:07:10 并且类型 = UTC
  • 验证正常。

但是为什么如果我运行验证的时间是 13:12 并且 token 的生命周期是 13:07,验证就会通过?到期时是否有最低下注时间?

最佳答案

From the only source of this library got from google search您可以看到时间正在转换为世界标准时间 (UTC)。

DateTime.Now.AddMinutes(15) 似乎是问题所在。
将其替换为 Datetime.UtcNow.AddMinutes(15) 可能会解决问题

您本地的时区是 UTC+2:00 吗?

关于c# - JwtSecurityToken 返回错误的过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47711983/

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