我正在尝试在 IdentityServer 中实现密钥过渡,但是似乎仅在启动期间配置了密钥。
Crypto docs说我应该使用AddValidationKeys
。我可以在startup docs中找到如何在启动过程中使用它们,并且效果很好。
是否可以在运行时使用AddValidationKeys
来处理密钥翻转,因此我不必重新启动服务即可将密钥翻转?
答案 0 :(得分:1)
应该可以,但不要开箱即用。 Identity Server 4具有极好的可扩展性,并且在签名密钥方面,它使用ISigningCredentialStore
来检索已配置的令牌签名密钥。默认情况下,它看起来像是注入并返回您在Startup
中配置的任何内容。
您将需要创建自己的ISigningCredentialStore
实现并将其添加到DI中。然后,Identity Server 4应根据您的业务逻辑使用存储库在运行时动态检索密钥。
public class CustomSigningCredentialsStore : ISigningCredentialStore
{
public Task<SigningCredentials> GetSigningCredentialsAsync()
{
// Your business logic to retrieve signing keys at runtime
}
}