Пользовательские поля заголовка HTTP удалены - PullRequest
4 голосов
/ 17 марта 2011

Моя компания продает приложение на основе LAMP (где P = Perl, а не PHP), развернутое как устройство. Клиент пытается интегрировать свой единый вход SiteMinder с нашим приложением, чтобы наше устройство находилось за прокси-сервером, на котором запущен плагин SiteMinder Apache, который действует как привратник. Для нашего приложения для аутентификации пользователя через SSO мы ожидаем увидеть HTTP-запросы, которые включают cookie-файл SSO (в данном случае SMSESSION) и пользовательскую переменную заголовка HTTP, содержащую имя пользователя.

Однако, когда наш сервер Apache получает HTTP-запросы от прокси-сервера единого входа, все пользовательские HTTP, по-видимому, удаляются, хотя файл cookie присутствует. Я поручил коду Perl записывать заголовки в файл журнала со следующим кодом:

my $q = new CGI;
...
my %headers = map { $_ => $q->http($_) } $q->http();
my $headerDump = "Got the following headers:\n";
for my $header ( keys %headers ) {
    $headerDump = $headerDump . "$header: $headers{$header}\n";
}
kLogApacheError("info", $headerDump);

... и это вывод, который я получаю (слегка отредактированный для конфиденциальности):

[Wed Mar 16 23:47:31 UTC 2011] [info] Got the following headers:
        HTTP_COOKIE: s_vi=[CS]v1|26AE2FFD851D091F-4000012E400035C5[CE]; s_nr=1297899843493; [snip]
        HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.8
        HTTP_ACCEPT_ENCODING: gzip,deflate,sdch
        HTTP_CONNECTION: keep-alive
        HTTP_ACCEPT: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
        HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.3
        HTTP_USER_AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13
        HTTP_HOST: [redacted].com

IOW, ожидаемые пользователем заголовки HTTP отсутствуют. Когда мы перенаправляем трафик с прокси-сервера на другой сервер Apache (т.е. не на наше устройство), все 20+ пользовательских заголовков отображаются должным образом. Это настоятельно говорит о том, что наш сервер Apache удаляет заголовки.

Мы никогда не сталкивались с подобной проблемой в других развертываниях, даже с этим конкретным решением единого входа. Я понимаю, что это похоже на другой вопрос на этом сайте ( Сервер удаляет настраиваемые поля заголовка HTTP ), но предложения там (например, проблема, вызванная запуском mod_security) не применимы.

Есть ли другая причина, по которой наш сервер может удалять заголовки HTTP? Или что-то еще происходит?

Спасибо за любую помощь!

Мэтт

Ответы [ 3 ]

4 голосов
/ 29 марта 2011

Вы прослушали необработанный HTTP-трафик между прокси и вашим экземпляром Apache?Если здесь отсутствуют необходимые заголовки, проблема связана с прокси-сервером.

2 голосов
/ 02 апреля 2011

Я наконец-то понял это, и это было довольно непонятно ...

Используя HttpFox, действительно выглядело, как будто трафик перенаправляется на устройство, а не перенаправляется . В случае перенаправлений файлы cookie сохранялись, а заголовки HTTP-запросов - нет. Однако все правила SSO Proxy были «форвардами», поэтому мы были полностью озадачены тем, почему перенаправления показывались.

Мы знали, что логика нашего приложения перенаправляет на / signin /, если пользователь еще не аутентифицирован, но мы ожидали, что он все равно будет перенаправлен через прокси. Однако мы не осознавали, что существует опция единого входа SiteMinder, enableredirectrewrite , которая по умолчанию будет обрабатывать «любые перенаправления, инициированные серверами назначения [путем их передачи] обратно запрашивающему пользователю». Как только мы установили для этого флага значение «да», а redirectrewritablehostnames для «все», все работало как по волшебству.

(Для справки, см. Версию руководства SiteMinder здесь: http://www.scribd.com/doc/48749285/h002921e).

1 голос
/ 13 июня 2017

У меня недавно была проблема, когда я не мог получить какие-либо пользовательские HTTP-заголовки, передаваемые в мой PHP-скрипт. Похоже, что Apache 2, работающий с PHP 7 с FCGID, не позволял и не удалял и не отключал все пользовательские заголовки HTTP.

Вот мое исправление: http://kiteplans.info/2017/06/13/solved-apache-2-php-7-fcgid-not-allowing-removing-stripping-custom-http-headers/

...