Должно ли несколько экземпляров Spring Boot App, работающих за балансировщиком нагрузки, работать с аутентификацией пользователя Spring CAS? - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть приложение Spring Boot, над которым я работаю, которое использует аутентификацию CAS. У меня CAS работает нормально, но как только я запускаю более 1 копии приложения за балансировщиком нагрузки, приложение не может аутентифицироваться.

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

Если я уменьшу количество экземпляров до 1, оно снова начнет работать нормально.

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

Насколько я понимаю, это должно сработать, потому что у меня настроен server.use-forward-headers = true.

Мне не хватает других настроек CAS, Spring Boot Server или Spring Boot Security, которые необходимы для этой работы?

Должно ли это работать с аутентификацией CAS.

Я использую Spring Book 2.0.4.RELEASE Я использую spring-security-cas-client 3.0.8.RELEASE

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Если вы используете OAuth / SAML / делегированная аутентификация, то вам может потребоваться настроить балансировщик нагрузки F5 (или любой балансировщик нагрузки), чтобы включить « постоянство сеанса », чтобы сервер CAS работал нормально.

0 голосов
/ 16 ноября 2018

Я нашел решение этой проблемы. Похоже, что по умолчанию Spring Boot Security использует сеансовую безопасность, поэтому вам нужно реализовать собственную защиту без сохранения состояния, чтобы эта работа работала без сохранения состояния.

Благодаря этому сообщению в блоге и некоторой дополнительной помощи от автора сообщения в блоге, я смог отлично работать в Spring Boot 2.x

Оформить заказ, это интересно и отлично работает.

https://www.dedicatedcode.com/posts/stateless-authentication/

Спасибо всем, кто предоставил ответы, которые направили меня в правильном направлении, чтобы найти это решение.

0 голосов
/ 13 ноября 2018

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

https://apereo.github.io/cas/5.2.x/installation/Hazelcast-Ticket-Registry.html

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

...