Обновляйте ключи проверки во время выполнения в IdentityServer

#.net-core #identityserver4

#.net-core #identityserver4

Вопрос:

Я пытаюсь реализовать переключение ключей на IdentityServer, но, похоже, ключи настраиваются только во время запуска.

В Crypto docs говорится, что я должен использовать AddValidationKeys . Я могу узнать, как использовать их во время запуска в документах для запуска, и это отлично работает.

Можно ли использовать AddValidationKeys во время выполнения для обработки переноса ключей, чтобы мне не приходилось перезапускать службу для переноса ключей?

Ответ №1:

Это должно быть возможно, но не из коробки. Identity Server 4 чрезвычайно расширяем, и что касается ключей подписи, он использует ISigningCredentialStore для извлечения настроенных ключей подписи токена. По умолчанию похоже, что он просто вводит и возвращает все, что вы настраиваете в Startup .

Вам нужно будет создать свою собственную реализацию ISigningCredentialStore и добавить ее в DI. Затем сервер идентификации 4 должен использовать хранилище для динамического извлечения ключей во время выполнения на основе вашей бизнес-логики.

 public class CustomSigningCredentialsStore : ISigningCredentialStore
{
    public Task<SigningCredentials> GetSigningCredentialsAsync()
    {
        // Your business logic to retrieve signing keys at runtime
    }
}