IdentityServer4 с несколькими экземплярами - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть два док-контейнера с одним и тем же образом нашего OAuth-сервера с IdentityServer4, управляемым с помощью Docker Swarm (я не забочусь об этом).

Проблема в том, что токен иногда действителен, а иногдане в том случае, если он действителен (401 не авторизован).

Мы попытались оставить работающим только один экземпляр, и проблема была решена, но нам нужно два.

Как настроить несколько экземпляров сервера?

Примечания:

  • Мы используем AddDeveloperSigningCredential().Я не знаю, повлияет ли это или нет.
  • Это тестовая среда с ASPNETCORE_ENVIRONMENT=Development

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Проблема заключалась в том, что файл tempkey.rsa отличался в обоих экземплярах IdentityServer.

Мне пришлось настроить файл с действием сборки, чтобы «всегда копировать» для включения в построенный проект ипоэтому в образе докера.

Я знаю, что в производстве его не следует использовать таким образом, но это была срочная необходимость в демонстрации.

0 голосов
/ 18 апреля 2019

Вы можете иметь столько экземпляров веб-приложения Identity Server 4, сколько хотите:

  • Поделиться учетными данными для подписи (если вы используете AddDeveloperSigningCredential(), это должно быть хорошо)
  • Выпускать токены, используя один и тот же uri эмитента (вы можете на {baseUrl}/.well-known/openid-configuration странице проверить, совпадает ли uri эмитента на ваших двух экземплярах сервера идентификации 4)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...