У меня есть основной прокси, который отправляет запросы на дополнительный прокси, на котором установлен OpeenSSO.
Если агент OpenSSO определяет, что пользователь не вошел в систему, он инициирует перенаправление 302 на сервер аутентификации и предоставляет исходный (закодированный) URL-адрес, запрошенный пользователем в качестве параметра GET в заголовке местоположения перенаправления.
Однако URL-адрес в переменной GET - это URL-адрес внутреннего (вторичного) прокси-сервера, а не исходного прокси-сервера. Поэтому я хотел бы отредактировать / переписать заголовок ответа «Местоположение», чтобы указать правильный URL.
E.g.
- http://a.com/hello/ (исходный запрошенный URL)
- http://a.com/hello2/ (дополнительный прокси с агентом OpenSSO)
- http://auth.a.com/login/?orig_request=http://a.com/hello2/ (302 перенаправление на сервер аутентификации с запрошенным URL-адресом второго прокси-сервера, закодированным в переменной GET)
- http://auth.a.com/login/?orig_request=http://a.com/hello/ (Закодированный 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"