Привет,
В моем приложении ASP.NET Core я использую OpenIdConnectServer для аутентификации API. Все работает нормально.
Но есть одна вещь, которую я не могу решить - как установить пользовательскую папку для сохранения ключей подписи токена?
В конфигурации службы у меня есть:
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(@"keys/"));
После первого запуска там создается ключ приложения. Но OpenIdServer как-то сам распоряжается ключами.
app.UseOpenIdConnectServer(options => {
...
options.DataProtectionProvider = app.ApplicationServices.GetDataProtectionProvider();
...
});
Несмотря на это, ключ подписи учетных данных создается в расположении по умолчанию:
A new RSA key ... persisted on the disk: /home/.../.aspnet/aspnet-contrib/oidc-server/<some guid>.key.
Это баг или фича? Как заставить сервер хранить ключи еще и в папке keys/
?
Аннотация – зачем я это делаю:
Моя идея состоит в том, чтобы создать API из n док-образов этого, спрятать его за балансировщиком нагрузки и запустить где-нибудь в облаке. Проблема в том, что когда каждый экземпляр в докере создает свой собственный ключ приложения и подписи, зашифрованный токен авторизации не будет работать ни для какого другого экземпляра, кроме того, который создал и подписал токен своим ключом. Поэтому я пытаюсь распространять одни и те же ключи на каждый работающий образ докера. В предопределенную папку приложения, если это возможно.
Или есть лучший подход или лучшая практика?
Заранее спасибо.