在 JwtBearerHandler 中,
如何推荐进行签名密钥轮换? 重新启动应用程序对我不起作用。
OpenIdConnectConfiguration
只会被加载一次并且缓存“永久”(直到应用程序再次启动)。如何推荐进行签名密钥轮换? 重新启动应用程序对我不起作用。
OpenIdConnectConfiguration
只会被加载一次并且缓存“永久”(直到应用程序再次启动)。JwtBearerHandler
内部的_configuration
实际上根本没有被缓存。缓存配置的是用于从授权方检索配置的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端点。