Я использую. net Базовую платформу Core Web API 3.1.2 и в конфигурации я добавил следующий код:
services.AddAuthentication(opt =>
{
opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).
AddJwtBearer(opt =>
{
**opt.SaveToken = true;**
opt.TokenValidationParameters = new TokenValidationParameters()
{
IssuerSigningKey = new SymmetricSecurityKey(_jwtSigningKey),
ValidateAudience = false,
ValidateIssuer = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
};
});
Логически, opt.SaveToken = true сохранит токен на сервере, а метод аутентификации не должен принимать токен, выданный с любого другого сервера, даже если другой сервер использует точно такой же ключ подписи JWT, поскольку он не сохранен на сервере.
Я сделал тест и загрузил один и тот же ключ подписи на 2 разных сервера и получил токен входа с одного сервера и использовал его для аутентификации на другом сервере, а другой сервер принял токен, даже если токен не был сохранен Более того, я случайно добавил случайное уникальное сгенерированное значение строки, которое будет включено в токен, поэтому нет никакого способа, чтобы 2 токена могли быть идентичными.
Почему это происходит? Что мне здесь не хватает?