#.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
}
}