Я знаю, что это старая ветка, но все равно публикую свой ответ, потому что я наткнулся на эту ветку во время поиска того же сценария и думаю, что он может быть полезен для других.
В параметрах TokenValidationParameters есть делегат IssuerSigningKeyResolver
, который можно установить при настройке других параметров. При каждом запросе аутентификации ваш делегат будет выполняться. Вы можете динамически возвращать SecurityKey
.
Например:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
//ValidIssuer = jwtSettings.ValidIssuer,
//ValidAudience = jwtSettings.ValidAudience,
//IssuerSigningKey = issuerSigningKey,
IssuerSigningKeyResolver = (token, secutiryToken, kid, validationParameters) =>
{
SecurityKey issuerSigningKey = null;
// Set issuerSigningKey as per your logic.
// This delegate will be executed for eahc request.
return new List<SecurityKey>() { issuerSigningKey };
}
};
});