hal*_*llo 6 security jwt openid-connect asp.net-core
在JwtBearerHandler 中,OpenIdConnectConfiguration它只加载一次并“永远”缓存(直到应用程序再次启动)。
进行签名密钥轮换的推荐方法是什么?重新启动应用程序对我不起作用。
Scheme 处理程序被注册为瞬态依赖项,因此_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);
}
});
Run Code Online (Sandbox Code Playgroud)
如果在配置身份验证方案后添加它,则配置后操作应在默认配置后操作之后运行,并且您应该能够重新配置配置管理器。
当然,你也可以随时显式调用配置管理器上的RequestRefresh方法。例如,如果您有一些可以通知您配置更改的外部信号,您可以这样做。例如,您可以为此提供一个 API 端点。
| 归档时间: |
|
| 查看次数: |
1147 次 |
| 最近记录: |