IBM Cloud: аутентификация с помощью AppID для нескольких экземпляров приложения
Мы разрабатываем приложение React с серверной частью Express NodeJS, и это приложение защищено аутентификацией с использованием IBM App ID. Все работает нормально с механизмом аутентификации, если приложение развернуто в Cloud Foundry Service с запущенным только 1 экземпляром.
По соображениям производительности и высокой доступности нам необходимо увеличить количество экземпляров. К сожалению, как только мы добавляем экземпляр, мы сталкиваемся с проблемами с аутентификацией. Мы просматриваем экран аутентификации несколько раз, прежде чем аутентификация завершится успешно и мы сможем получить доступ к приложению.
Для информации мы используем базу данных Cloudant для хранения сеанса. Вы когда-нибудь сталкивались с этой проблемой и как вы ее решили? Спасибо за ваш отзыв.
1 ответ
Технически то, что вы делаете, правильно.
Я сталкивался с этими проблемами раньше, и первым делом обычно является локальная обработка сеанса - либо хранилище памяти по умолчанию, либо хранилище сеансов на основе файлов. У вас должно быть это покрыто, поскольку вы говорите, что у вас есть сеансы в Cloudant, но иногда, когда вы хотите разрешить локальным разработчикам запускать приложение, вам могут потребоваться некоторые переключатели для управления использованием общего хранилища, а также если http или https используется. Почему http и https важны, у вас, вероятно, есть cookie: {secure: true}, который в этом случае нужно перевернуть. Затем вам может потребоваться http-трассировка попытки входа в систему, чтобы убедиться, что вы случайно не используете другое имя хоста, отличное от того, с которого вы начали. Это может легко произойти, если ваш URL-адрес обратного вызова для идентификатора приложения изменит его. Это все еще может быть не вашей причиной, и если это так - настройте эту среду с двумя экземплярами,сохранять журналы с серверов приложений, отслеживать http из браузера и проверять созданные сеансы из Cloudant. Должен быть создан только один сеанс, один URL-адрес для приложения, один и тот же файл cookie сеанса, сохраненный в браузере. Если что-то из этого не складывается - тогда вам нужно выяснить, почему бы и нет.