Срок действия токена JWT не установлен на требуемое время - PullRequest
0 голосов
/ 04 мая 2020

Я использую JWT в своем. Net Базовом приложении и использую 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);

Время моего компьютера - 14: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 Ответ

1 голос
/ 04 мая 2020

Вы живете в месте, где часовой пояс UT C -7. DateTime.UtcNow возвращает время UT C, вместо этого используйте DateTime.Now.

...