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>