簡體   English   中英

JWT 令牌過期在 Asp.Net Core API 中不起作用?

[英]JWT token expiration not working in Asp.Net Core API?

我已將令牌到期時間設置為 1 分鍾,但 1 分鍾后我沒有收到 401 未經授權的錯誤。

啟動.cs

.AddJwtBearer(options =>
                {
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuer = true,
                        ValidateAudience = true,
                        ValidateLifetime = true,
                        ValidateIssuerSigningKey = true,
                        ValidIssuer = Configuration["Jwt:Issuer"],
                        ValidAudience = Configuration["Jwt:Issuer"],
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
                    };
                });

令牌生成方法:

var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:Key"]));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
int expiryMins = 1
var token = new JwtSecurityToken(_configuration["Jwt:Issuer"],
  _configuration["Jwt:Issuer"],
  null,
  expires: DateTime.UtcNow.AddMinutes(expiryMins),
  signingCredentials: credentials);

return new JwtSecurityTokenHandler().WriteToken(token);

正如我們在評論中討論的那樣,這是由於時鍾偏差設置默認為 5 分鍾,允許令牌在到期后最多 5 分鍾內被視為有效(從驗證令牌的服務器的角度來看)。 存在時鍾偏差設置是因為頒發令牌的服務器和驗證令牌的服務器的時鍾可能略有不同。 通常在這里有一些靈活性是個好主意,默認的 5 分鍾是可以的。 如果您不希望有這種行為,您可以將 TokenValidationParameters 上的 ClockSkew 設置為 0 秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM