ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] autorization



> 
> День добрый!
> я вот недавно тут спрашивал, как сделать авторизацию на 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                 =



 




Copyright © Lexa Software, 1996-2009.