#asp.net-core #nginx #https #load-balancing #identityserver4
#asp.net-ядро #nginx #https #балансировка нагрузки #identityserver4
Вопрос:
Я пытаюсь настроить локальные идентификаторы с балансировкой нагрузки nginx (используя гибридную модель и HTTPS), используя контейнеры docker.
Я могу успешно войти в систему, если я масштабирую идентификаторы до 1.
Когда я масштабируюсь до 2 или более, используя балансировку в циклическом стиле, я перенаправляюсь на страницу входа при попытке входа в систему.
При первоначальной попытке входа в систему попадает в IDS1, затем вторая часть запроса входа попадает в IDS2, которая возвращает следующую ошибку: запись конечной точки не найдена для пути запроса: /Account/Login [IdentityServer4.Hosting .EndpointRouter]
Я проверил, что оба идентификатора запущены и запущены, и если я нажму на документ обнаружения, я увижу, что nginx обходит его, и каждый раз получаю успешный результат.
РЕДАКТИРОВАТЬ: я больше не получаю ошибку, но когда я пытаюсь войти в систему, вторая часть запроса при входе в IDS2 по-прежнему действует так, как будто я не в середине процесса входа в систему и переходит на страницу входа.
Комментарии:
1. Немного не связано, но есть ли у вас одинаковые ключи защиты данных и ключи подписи в обеих службах?
2. @ToreNestenius Итак, обновление проблемы, эта ошибка больше не возникает (я изменил порядок приложений. Используйте IdentityServer() в конфигурации при запуске. Но реальная проблема, стоящая за этим, все еще возникает (IDS2 думает, что вы вообще не вошли в систему, и перенаправляет обратно на логин).
3. @ToreNestenius Что касается вашего вопроса о ключах защиты данных, в настоящее время я использую только IdentityServer. AddSignedCredential(сертификат) для добавления X509Certificate2 я не использую . В настоящее время выполняется функция AddDataProtection().
4. Надеюсь, что мой ответ ниже является приемлемым ответом. 🙂
Ответ №1:
Вам необходимо настроить API защиты данных и установить один и тот же ключ в обеих службах, потому что в противном случае ASP.NET не будет принимать файлы cookie от другого сервиса. Ключ используется для защиты и шифрования файла cookie.
Чтобы узнать о API защиты данных, я недавно написал этот справочный проект
- AzureKeyVaultKeyRingRepository Цель состоит в том, чтобы продемонстрировать и показать, как хранить ASP.NET Связка ключей API защиты основных данных в Azure Key Vault. (Скоро появится сообщение в блоге)
Подробнее об API защиты данных читайте здесь
Комментарии:
1. Мне пришлось настроить использование локальной файловой системы вместо Azure, но концепция отлично сработала и решила мою проблему! Спасибо.
2. Рад, что вы это исправили!