Cas-защищенный сайт за обратным прокси apache
Моя настройка:
Кас сервер (скажем, URL
https://localhost:8443/cas-server/
)Веб-сайт, защищенный от несанкционированного доступа, размещенный на tomcat-сервере, на котором работает cas-клиент
https://localhost:4448/myApp
)Httpd apache2, с mod 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. Скорее всего со стороны клиента. Как я могу настроить такой прокси для правильной работы, чтобы все это было прозрачным, как только я получил действительный билет?
Включено ли использование Tomcat AJP? Или настраивать и использовать таинственные функции обратного вызова cas proxy в cas-client, которые я никогда не понимал, как их использовать? что-то другое?
1 ответ
Директива 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>