Моя установка:
Сервер Cas (скажем, url https://localhost:8443/cas-server/
)
Веб-сайт с защитой cas, размещенный на сервере tomcat, на котором запущен cas-client (скажем, (https://localhost:4448/myApp
)
Httpd apache2 с модом auth cas и proxy_http, который используется как обратный прокси. (http://localhost:80
)
Что я хочу сделать, так это настроить обратный прокси на что-то вроде этого:
<Location /proxyTest >
ProxyPass https://localhost:4448/myApp
ProxyPassReverse https://localhost:4448/myApp
</Location>
И тогда сможете писать
https://localhost/proxyTest
вместо того
https://localhost:4448/myApp
И это работает хорошо, меня перенаправляют, я получаю cas-ticket, я аутентифицируюсь и т. Д. ПРОБЛЕМА заключается в том, что URL-адрес страницы cas-login показывает:
https://localhost:8443/cas-server/login?service=https%3A%2F%2Flocalhost%3A4448%2Fmyapp
И после входа в систему в моем браузере отображается следующий URL:
https://localhost:4448/myApp
Итак, перенаправление не работает должным образом ... где-то по пути меня отправляют обратно на URL-адрес без прокси. Скорее всего cas-клиентом. Как я могу настроить такой прокси для правильной работы, чтобы все это было прозрачным, как только я получу действующий билет?
Используется ли использование Tomcat AJP? Или настроить и использовать таинственный механизм обратного вызова прокси-сервера cas в cas-client, который я никогда не понимал, как использовать? что-то другое?
Директива ProxyPassReverse - это то, что перезаписывает URL-адрес, возвращаемый Apache при перенаправлении и т. Д. См. этот вопрос для краткого объяснения.
Я думаю, что ты ищешь
<Location /proxyTest>
ProxyPass https://localhost:4448/myApp
ProxyPassReverse https://localhost/proxyTest
</Location>
Здесь вы используете http (s), поэтому AJP не задействован. Согласно документам, ProxyPassReverse не требуется для AJP, поэтому у вас может быть что-то вроде
<Location /proxyText>
ProxyPass ajp://localhost:4448/myApp
</Location>