>
> День добрый!
> я вот недавно тут спрашивал, как сделать авторизацию на fast-cgi...
> судя по отсутсвию реакции или это слишком сложно или вопрос
> некорректно поставлен. В любом случае: где хотя бы искать ответ,
> как можно заставить скрипт выдавать мне табличку авторизации?
>
> Буду благодарен за совет.
>
>
Xmm... дело в том, что ты не совсем правильно себе представляешь
механизм авторизации в HTTP. Выдать авторизационную табличку? Да
это проще простого. При генерации ответа твоя CGI-программа должна
сгенерировать HTTP-код ответа не "200 OK", а "401 Authorization
Required" - для этого придется использовать "nph-скрипт", почитай,
что это за зверь. В этом случае броузер должен выдать ту самут табличку
и спросит пароль, но.... тебе от этого легче не станет :))) Броузер
передает логин/пароль через заголовок "Authorization: ", но Apache
тебе его НИ ПРИ КАКОМ раскладе не отдаст. И я не знаю, есть ли способ
заставить его поделиться этой инфо. Но, боюсь, иначе как хаканьем
source code его на это уговорить нельзя :(
Я вообще делал внешнюю авторизацию вот каким образом. Есть некий
внешний скрипт ( пусть он будет на FastCGI ), производящий эту самую
авторизацию. На той области, которую тебе надо авторизовывать ( у
меня был смысл авторизовывать ТОЛЬКО .html и .cgi ) описываешь, чтобы
все .html/.cgi файлы обрабатывались внешним обработчиком - ентим самым
скриптом. Сам логин/пароль передается через cookies. Работа скрипта
выглядит следующим образом - при запросе .html/.cgi файла управление
получает скрипт. Он проверяет, есть ли этот cookie и тот ли в нем
пароль. Если да -- выдает на stdout этот .html-файл ( с SSI или там
PHP, ясен пень, траблы возникнут ) или запускает запрашиваемый .cgi.
Если cookie НЕТ - скрипт выдает что-то типа :
<script> window.open('/Requestor', '', 'тра-та-та') </script>.
Этот самый "/Requestor" ( он НЕ должен попадать под управление
этого скрипта ) выводит форму для ввода логина/пароля, проверяет их
и в случае совпадения генерирует нужный cookie и говорит
<script> opener.reload(true) </script>
что заставляет броузер перегрузить запрошенный документ - а так
как cookie уже сформирован, что авторизационный скрипт пропусти этот
запрос к исходному файлу.
Знаю ( критиканы PLZ не сильно кричать ), что есть у способа
недостатки - использование JavaScript, трудность с авторизацией НЕ
.html/.cgi, опять-же SSI/PHP/тра-ля-ля, но в моем случае это было не
важно. Зато это РАБОТАЕТ, выглядит почти как стандартная авторизация,
совершенно прозрачно для .html/.cgi и, главное, позволяет сделать
НОРМАЛЬНЫЙ logout - простым обнулением cookie :)))
Вот так..... если будут вопросы, пиши, буду рад рассказать, какие
еще есть камни подводные.
Sincerely,
Felix.
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =