JWT 令牌过期未设置为所需时间

Posted

技术标签:

【中文标题】JWT 令牌过期未设置为所需时间【英文标题】:JWT token Expiration is not getting set to the required time 【发布时间】:2020-08-18 06:36:48 【问题描述】:

我在我的 .Net Core 应用程序中使用 JWT,并且我正在使用 System.IdentityModel.Tokens.Jwt (5.6.0) 我正在尝试将过期时间设置如下:

var token = new JwtSecurityToken(
                "www.site.com",
                "www.site.com",
                claims,
                expires: DateTime.UtcNow.AddMinutes(5),
                signingCredentials: credentials);

我的电脑时间是下午 2.38 点,令牌验证到属性的值是晚上 9.43 点。 必须是下午 2.43 点。

我的 Startup.cs 配置如下:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        
            options.TokenValidationParameters = new TokenValidationParameters
            
                ClockSkew = TimeSpan.Zero,
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,
                ValidIssuer = Configuration["Authentication:Issuer"],
                ValidAudience = Configuration["Authentication:Issuer"],
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Authentication:Secret"]))
            ;
        );

这是什么原因? 谢谢您的帮助。

【问题讨论】:

【参考方案1】:

您居住的时区为 UTC -7。 DateTime.UtcNow 返回 UTC 时间,请改用DateTime.Now

【讨论】:

以上是关于JWT 令牌过期未设置为所需时间的主要内容,如果未能解决你的问题,请参考以下文章

DocuSign:在 JWT 令牌中设置过期 - 始终获取一小时过期的访问令牌

我如何在 jwt 令牌中设置过期 30 分钟

在流明 jwt 令牌中设置过期时间

设置过期时间以采样 django jwt 令牌

令牌未过期模块不起作用,Angular 6

Nodejs jwt 令牌永不过期