我正在尝试在身份服务器中实现密钥滚动更新,但似乎密钥仅在启动期间配置。
加密文档说我应该使用AddValidationKeys
.我可以在启动文档中找到如何在启动期间使用它们,并且效果很好。
是否可以在运行时使用AddValidationKeys
来处理密钥滚动更新,这样我就不必重新启动服务来滚动更新密钥?
这应该是可能的,但不是开箱即用的。身份服务器 4 具有极强的可扩展性,在签名密钥方面,它使用ISigningCredentialStore
来检索配置的令牌签名密钥。默认情况下,它看起来只是注入并返回您在Startup
中配置的任何内容。
您需要创建自己的ISigningCredentialStore
实现并将其添加到 DI。然后,身份服务器 4 应使用该存储根据您的业务逻辑在运行时动态检索密钥。
public class CustomSigningCredentialsStore : ISigningCredentialStore
{
public Task<SigningCredentials> GetSigningCredentialsAsync()
{
// Your business logic to retrieve signing keys at runtime
}
}