У меня есть основной прокси-сервер, который отправляет запросы на дополнительный прокси-сервер, на котором установлен OpeenSSO.
Если агент OpenSSO определяет, что пользователь не вошел в систему, он вызывает перенаправление 302 на сервер аутентификации и предоставляет исходный (закодированный) URL-адрес, который пользователь запросил в качестве параметра GET в заголовке местоположения перенаправления.
Однако URL-адрес в переменной GET - это адрес внутреннего (вторичного) прокси-сервера, а не исходного прокси-сервера. Поэтому я хотел бы отредактировать/переписать заголовок ответа "Местоположение", чтобы получить правильный URL.
Э.Г.
- http://a.com/hello/ (Оригинальный запрошенный URL)
- http://a.com/hello2/ (Вторичный прокси с агентом OpenSSO)
- http://auth.a.com/login/?orig_request=http%3A%2F%2Fa.com%2Fhello2%2F (302 перенаправить на сервер авторизации с запрошенным URL второго прокси-сервера, закодированного в переменной GET)
- http://auth.a.com/login/?orig_request=http%3A%2F%2Fa.com%2Fhello%2F (Закодированный URL переписывается на исходный запрос)
Я безуспешно перепробовал все комбинации заголовков и переписываний, поэтому думаю, что это невозможно. Самое близкое, что я получил, было это, но функция редактирования mod_headers не анализирует переменные окружения.
# On the primary proxy.
RewriteEngine On
RewriteRule ^/(.*)$ - [E=orig_request:$1,P]
Header edit Location ^(http://auth\.a\.com/login/\?orig_request=).*$ "$1http%3A%2F%2Fa.com%2F%{orig_request}e"