Identity Server 4 Используйте новый ключ подписи после запуска - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть настройка IdentityServer4 в службе API aspnetcore (запущенной в Service Fabric в качестве службы без сохранения состояния), которая использует сертификат подписи, созданный и хранящийся в хранилище ключей Azure. В классе Startup я использую метод AddSigningCredential для установки начального сертификата подписи, но я не уверен в том, какие шаги необходимы для использования нового сертификата подписи, когда истекает срок действия первоначального сертификата.

У меня в Key Vault настроено создание нового сертификата до истечения срока действия предыдущего, и в моем сервисе запущен фоновый процесс для периодического получения сертификата из Key Vault и проверки, отличается ли он от того, который в настоящее время используется IdentityServer.

Чего я не знаю, так это установить новый сертификат для использования IdentityServer. Насколько я могу судить, я не могу снова использовать метод AddSigningCredential, поскольку DI-контейнер не позволяет регистрировать новые зависимости после запуска. Кроме того, DefaultSigningCredentialsStore, зарегистрированный для зависимости ISigningCredentialStore, не позволяет обновлять SigningCredentials после построения.

Должен ли я написать свою собственную версию ISigningCredentialStore и IValidationKeysStore, чтобы можно было обновлять SigningCredentials? Похоже, что это будет обычное использование и должно быть в самом продукте, или я что-то упустил?

1 Ответ

0 голосов
/ 25 апреля 2018

Интересно, смотрит ли IdentityServer на срок его действия?Потому что это не должно иметь значения, так как используется только для шифрования токенов.В противном случае вы должны предотвратить истечение срока действия сертификата.

Сертификат используется для шифрования и дешифрования токенов.Это не позволяет другим вмешиваться в токен.

Если вы измените сертификат, то все существующие токены станут недействительными сразу, поскольку сервер больше не сможет декодировать входящие токены.Это то же самое поведение, когда вы используете TemporarySigningCredentials и перезапускаете IdentityServer.

Так что это не должно измениться вообще.Я думаю, что было бы лучше создать специальный сертификат (который, возможно, никогда не истекает) только для IdentityServer.

...