在IdentityServer运行时更新验证密钥

时间:2019-04-23 05:44:55

标签: .net-core identityserver4

我正在尝试在 IdentityServer 中实现密钥过渡,但是似乎仅在启动期间配置了密钥。

Crypto docs说我应该使用AddValidationKeys。我可以在startup docs中找到如何在启动过程中使用它们,并且效果很好。

是否可以在运行时使用AddValidationKeys来处理密钥翻转,因此我不必重新启动服务即可将密钥翻转?

1 个答案:

答案 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
    }
}