在运行时在 IdentityServer 中更新验证密钥



我正在尝试在身份服务器中实现密钥滚动更新,但似乎密钥仅在启动期间配置。

加密文档说我应该使用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
}
}