Как аутентифицировать двух клиентов одновременно с JASIG SSO

Честно говоря, не уверен, что заголовок достаточно описательный, поэтому здесь идет текст:

Предыстория

Я перестраиваю веб-приложение, используя среду Spring. Однако старое приложение работает на PHP.

Есть льготный период, когда оба приложения будут работать одновременно, поэтому я буду медленно перемещать материал в сторону Java и от PHP.

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

Эта проблема

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

Однако в этом и заключается проблема. Я настроил Spring Security для работы с SSO, а также PHP знает, как вести себя с ним. Однако проблема возникает, когда я делаю AJAX-запрос к стороне Spring. Spring Security обнаруживает, что я не вошел в систему (возможно, из-за того, что куки не отправляются) и, таким образом, возвращает 302, чтобы я перешел на страницу входа в CAS.

Мне удалось запустить все в одном (не обращенном наружу) домене:

  • cas.domain.local
  • app.domain.local (PHP)
  • tools.domain.local (Java)

Запросы поступают из app.domain.local в tools.domain.local

Я много читал о cookie-файлах для выдачи билетов, билетах о выдаче билетов, отправке информации о сеансе в моем запросе ajax, а также о том, что называется прокси-сервером аутентификации.

Вопрос

Какой мой лучший способ сообщить стороне java через запрос ajax, что я уже аутентифицирован на сервере SS SSO?

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

1

Решение

Вам нужно будет добавить некоторые настройки spring-security,
Нажмите Вот чтобы увидеть документ.

0

Другие решения

Я не думаю, что вы будете довольны CAS в этом случае.
Моим лучшим предположением было бы JWT-х обрабатывать вашу аутентификацию. JWT’S может инкапсулировать ваши данные аутентификации безопасным способом, и вы можете отправить их через Http-заголовок обоим приложениям или через cookie, который вы установили на супердомене. domain.local так что оба домена получают это. Вы по-прежнему можете использовать два отдельных «локальных» сеанса для своих приложений.

0

Так что в конце концов я понял, что все было работает, включая аутентификацию на стороне AJAX, но у меня все конфиги были неверные.

По-видимому https://cas.local/cas это другая конечная точка, чем https://cas.local/cas/,
Это привело к тому, что куки не были распознаны в данном конкретном случае.

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

0
По вопросам рекламы [email protected]