ASP.NET Core 7 Identity + JWT Authentication работает неправильноC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ASP.NET Core 7 Identity + JWT Authentication работает неправильно

Сообщение Anonymous »


Найдите решение!

Установите для ClockSkew значение TimeSpan.Zero

Я хочу использовать платформу ASP.NET Core Identity и аутентификацию с JWT.

Я внедрил идентификационные данные:

builder.Services.AddIdentity(options => { options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequireLowercase = false; options.Password.RequireDigit = false; options.Password.RequiredUniqueChars = 1; options.Password.RequiredLength = 8; options.Lockout.AllowedForNewUsers = true; options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"; }) .AddEntityFrameworkStores(); И промежуточное ПО JWT:

builder.Services .AddAuthentication(опции => { options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultSignInScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, config => { вар _configuration = builder.Configuration; JwtSettings jwtSettings = _configuration.GetSection("Auth").Get()!.Jwt; // Мы уже проверяем ноль вар secretKey = jwtSettings.Key; config.TokenValidationParameters = новые TokenValidationParameters() { ValidIssuer = jwtSettings.Issuer, ValidAudience = jwtSettings.Audience, Валидатаудиенс = правда, ValidateIssuer = правда, ValidateLifetime = правда, ValidateIssuerSigningKey = true, IssuerSigningKey = новый SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)), ClockSkew = TimeSpan.Zero // так как по умолчанию токен действителен 5 минут, // вам необходимо вручную настроить эти свойства, // поэтому вы можете сделать токен действительным менее 5 минут }; }); У контроллера есть метод Login с атрибутом [Authorize]:

[Авторизовать()] [HttpGet()] публичный секрет IActionResult() { вернуть ОК(); } Токен генерации

публичная строка GenerateAccessToken (IEnumerable утверждения) { вар jwtSettings = _authSettings.Jwt; вар secretKey = jwtSettings.Key; var SecurityKey = новый SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)); вар SigningCredentials = новые SigningCredentials (securityKey, SecurityAlgorithms.HmacSha256); вар токен = новый JwtSecurityToken( jwtSettings.Issuer, jwtSettings.Аудитория, претензии, истекает: DateTime.Now.ToUniversalTime(),, SigningCredentials: подписываниеCredentials ); вернуть новый JwtSecurityTokenHandler().WriteToken(токен); } Но когда я отправляю запрос с токеном, срок действия которого истек, он проверяется. В TokenService я генерирую JWT со сроком действия «сейчас».

Я использую UserManager и SignInManager для авторизации пользователя.

В чем проблема?

Я уже пробовал изменить порядок реализации Identity и JWT.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»