Обработчики схемы зарегистрированы как переходные зависимости , поэтому _configuration
внутри JwtBearerHandler
фактически вообще не кэшируется.
Что делает кешируетКонфигурация - это IConfigurationManager<OpenIdConnectConfiguration>
, которая используется для получения конфигурации из органа.Этот диспетчер конфигурации представляет собой Microsoft.IdentityModel.Protocols.ConfigurationManager<>
, который имеет внутренний механизм обновления, который позволяет ему периодически обновлять конфигурацию.
По умолчанию этот интервал автоматического обновления равен единице.день, поэтому менеджер конфигурации будет получать конфигурацию один раз в день.Однако вы можете изменить его, чтобы он обновлялся чаще.
Для этого вы можете настроить свойство AutomaticRefreshInterval
диспетчера конфигурации.Чтобы избежать необходимости создавать диспетчер конфигурации самостоятельно, вы можете добавить действие после настройки, чтобы настроить диспетчер конфигурации после его создания.Примерно так должно работать:
services.PostConfigure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options =>
{
if (options.ConfigurationManager is ConfigurationManager<OpenIdConnectConfiguration> manager)
{
manager.AutomaticRefreshInterval = TimeSpan.FromHours(6);
}
});
Если вы добавите после настройки ваших схем аутентификации, действие после настройки должно выполняться после действия по умолчанию после настройки, и вы сможетепереконфигурировать диспетчер конфигурации.
Конечно, вы также можете в любое время явно вызвать метод RequestRefresh
в диспетчере конфигурации.Вы можете сделать это, например, если у вас есть какой-то внешний сигнал, который может уведомить вас об изменениях конфигурации.Например, вы можете предоставить конечную точку API для этого.