Честно говоря, не уверен, что заголовок достаточно описательный, поэтому вот текст:
Предыстория
Я перестраиваю веб-приложение, используя среду Spring. Однако старое приложение работает на PHP.
Есть льготный период, когда оба приложения будут работать одновременно, поэтому я буду медленно перемещать материал в сторону Java и от PHP.
К счастью для меня, большая часть связи между тылом и веб-интерфейсом осуществляется через jQuery и AJAX.
Я уже настроил множество конечных точек отдыха, чтобы позаботиться о чтении, и сохранение было следующим в моем списке.
Проблема
Теперь возникает проблема, из-за которой моему приложению Spring необходимо знать, действительно ли вошедшему в систему пользователю разрешено сохранять данные.
Коллега предложил мне использовать Jasig CAS SSO в качестве аутентификации, чтобы приложение php и java использовали одинаковый логин.
Однако в этом и заключается проблема. Я настроил Spring Security для работы с SSO, а также PHP знает, как вести себя с ним. Однако проблема возникает, когда я делаю AJAX-запрос к Spring. Spring Security обнаруживает, что я не вошел в систему (возможно, из-за отсутствия отправляемых файлов cookie) и, таким образом, возвращает 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?
Пожалуйста, спросите, требуется ли дополнительная информация. Это мой первый вопрос о переполнении стека, и я не знаю, как все это сформулировать.