net core api 是不是检查每个请求的 jwt 到期日期? [复制]
Posted
技术标签:
【中文标题】net core api 是不是检查每个请求的 jwt 到期日期? [复制]【英文标题】:Does net core api check jwt expiry date on every request? [duplicate]net core api 是否检查每个请求的 jwt 到期日期? [复制] 【发布时间】:2020-04-08 21:43:06 【问题描述】:我已经设置了一个 net core api 服务器。我通过 Blazor 客户端应用程序发送我的请求。我将每个令牌的到期时间设置为 2 分钟,但令牌的工作时间约为 7 分钟。 api 会检查每个请求的过期日期吗?
我使用的代码如下所示。在 startup.cs 我有
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
options.TokenValidationParameters = new TokenValidationParameters
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["JwtIssuer"],
ValidAudience = Configuration["JwtAudience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtSecurityKey"]))
;
);
在用户登录时,会发出这样的令牌
var expiry = DateTime.UtcNow.AddMinutes(2);
var token = new JwtSecurityToken(
_configuration["JwtIssuer"], // read from appsetttings.json
_configuration["JwtAudience"], // read from appsettings.json
claims, // claims added here
expires: expiry,
signingCredentials: creds // signature
);
我有两个请求:第一个请求是在 11:52 成功,而到期日期是 11:49(您可以在下一张图片中看到)
第二个是在 11:54 不成功
【问题讨论】:
【参考方案1】:它实际上是一个消除服务器时钟之间不同步的功能,你可以像这样控制它,所以是的,令牌验证会检查每个请求的到期日期:
var expiry = DateTime.UtcNow.AddMinutes(2);
var token = new JwtSecurityToken(
ClockSkew = TimeSpan.FromMinutes(5)
_configuration["JwtIssuer"], // read from appsetttings.json
_configuration["JwtAudience"], // read from appsettings.json
claims, // claims added here
expires: expiry,
signingCredentials: creds // signature
);
【讨论】:
以上是关于net core api 是不是检查每个请求的 jwt 到期日期? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core Web API + Angular 对预检请求的响应未通过访问控制检查:预检请求不允许重定向
每个请求的 ASP.NET Core API JSON 序列化程序设置
ASP.Net Core 2.1 API JWT 无 cookie 会话?