У меня есть настройка IdentityServer4. Насколько я понимаю, мой webapi, который нуждается в защите, получает открытый ключ от IdentityServer4 и использует этот ключ для проверки ключа подписи JWT. Я не могу найти какую-либо документацию, которая описывает, как часто запрашивается открытый ключ. Это запрашивается при каждой проверке? Кэшируется ли он на веб-API, который нуждается в проверке?
Могу ли я применить какое-либо кэширование открытого ключа или это происходит автоматически?
Для веб-API я использую стандартную идентификацию .NET Core для проверки правильности предъявителя:
services.AddAuthentication("JWT")
.AddJwtBearer("JWT", options =>
{
options.Authority = "https://identityserver4.tld";
options.RequireHttpsMetadata = false;
options.Audience = "webapi";
});
Кажется, что я могу использовать этот код отсюда: https://devblogs.microsoft.com/aspnet/jwt-validation-and-authorization-in-asp-net-core/:
var tokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidIssuer = "http://localhost:5000/",
IssuerSigningKey = new X509SecurityKey(new X509Certificate2(certLocation)),
};
app.UseJwtBearerAuthentication(new JwtBearerOptions()
{
Audience = "http://localhost:5001/",
AutomaticAuthenticate = true,
TokenValidationParameters = tokenValidationParameters
});
Это даст мне открытый ключ локально, но все же: как часто выбирается открытый ключ, когда не используются вышеуказанные tokenValidationParameters?