auth_request, HTTP 401 иотсутствующийхедер WWW-Authenticate
Pavel Kolla
pavelkolla на gmail.com
Вт Фев 1 18:32:52 MSK 2011
Доброе время суток...
Столкнулся с проблемой, к сожалению, превышающей мои возможности -
Я использую nginx для имплементации ауфентикационной части некого клиент-
серверного бизнес приложения ориентированного на веб. Аутентификация происходит
посредством ngx_postgress и вроде как, с точки зрения логики, решение вполне
функционально и работоспособно с данной конфигурацией: http://dpaste.com/
hold/374783/
Проблема с которой я столкнулся связана (по моему мнению) с модулем
auth_request и выражается в отсутствующем "WWW-Authenticate" хедере в ответе на
первоначальный запрос, требуемым для инициализации процесса на клиенте. В моём
случае auth_request не только сам не посылает этот хедер, но и не предполагает
возможность дорисовать его в ручную (и даже если то было бы возможно -
auth_request игнорирует if директивы в том же контекстном блоке, лишая
возможности анализировать запрос и дорисовывать "WWW-Authenticate" хедер только
в тех случаях, когда клиент уже предоставляет аутефикационную информацию в виде
"Authenticate:" хедера)
Ещё одна иллюстрация той же проблемы для банального HTTP 401 ответа:
$ curl -I http://pkolla:88/t1/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Tue, 01 Feb 2011 14:15:31 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
WWW-Authenticate: pkolla
$ curl -I http://pkolla:88/t2/
HTTP/1.1 401 Unauthorized
Server: nginx/0.8.54
Date: Tue, 01 Feb 2011 14:15:34 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 195
Connection: keep-alive
Keep-Alive: timeout=20
Конфигурация при этом выглядит как:
location /t1/
{
set $app test1;
add_header "WWW-Authenticate" $host;
echo "test1";
}
location /t2/
{
set $app test2;
add_header "WWW-Authenticate" $host;
return 401;
echo "test2";
}
В исходниках модуля я вижу что, по идее, хедер должен быть послан, однако этого
не происходит в моём случае. Буду рад услышать ваши мнения и советы
относительно возможных граблей.
Благодарю заранее.
Подробная информация о списке рассылки nginx-ru