Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@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@xxxxxxxxxxxxx mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.