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: Re[2]: [apache-talk] HTTP_*



> 
> Здравствуйте.
> 
> УРА!!!!!!! Меня поняли! Как это приятно!
> 
  :-))))))))

> >   А смысл вот какой ( у меня так, по крайней мере, было ). Есть дир-я.
> > В ней лежит N CGIшек, доступные БЕЗ авторизации и парочка С авторизацией.
> > Штука вот в чем. Пока юзер бегает по обычным CGI -- все OK. Но после того,
> > как он авторизовался на одной из авторизованных CGI, Netscape начинает
> > посылать заголовок Authorization ( уж не помню как там его ) при обращении
> > К ЛЮБОМУ CGI этой директории. И если бы Apache передавал бы расшифрованный
> > Authorization в виде REMOTE_USER неавторизованным CGI, они бы знали, что
> > юзер уже авторизовался и могли бы вести себя ( при наличии REMOTE_USER )
> > чуточку иначе.... А так -- Authorization передается, а CGI об этом не
> > знает.
> Теперь бы еще узнать, как Вы ее решили...
> 
  Да не решил я ее нифига... вернее, полурешил - а потом сделался крызис,
и этот проэкт канул в лету :-(

> >   Да, еще просьба к адептам perl'а. Конференция по Apache, а не по perl.
> > Не все хотят и не все МОГУТ использовать perl, mod_perl и так далее.
> > Поэтому однозначные варианты ответов "ставь perl !!!" не всегда могут
> > быть приняты.... в вообще, будем терпимее друг к другу!
> Вот  именно, Перл у меня есть, я его очень люблю, и может до
> mod_perl поставлю, но вся проблема в том, что я это делаю не
> только  для  себя,   поэтому  хочется  более  универсального
> решения.  С  mod_rewrite  мне  понравилось,  но  он  столько
> весит...  Так  не  хочется  его везде за собой таскать из за
> одного заголовка в одном скрипте...
> 
  Кто-то тут советовал Cookies. Really это лучший выбор. Он решает
очень много проблем ( как я понял, LOGOGUT со стандартной WWW-авторизацией
сделать невозможно, это тут обсуждалось ). Плюс это, то и так далее.
Когда меня это приперло ( велели кровь из носу сделать LOGOUT ) мне
пришлось делать собственную авторизацию. Я сделал это примерно так 
( сразу попрошу любитлей покритиковать вместе к критикой написать
способ НОРМАЛЬНОГО LOGOUT со стандартной ) :

  Для всех HTML/CGI некой области объявляется :

 AddHandler cgi-script .sh
 Alias /Requestor /some/path/Req.sh
 Action check-pass /Requestor
 AddHandler check-pass .cgi .html .htm

  Этот Req.sh проверяет наличие некоего Cookies'а. Если он есть и
содержит ( в зашифрованном виде ) логин/пассворд, то Req.sh либо выдает
HTML, либо запускает CGI.

  Если cookies'а нет ( или пароль в нем не тот ) он выдает примерно
вот что :

  <script> window.open('/Requestor', 'pass', '.....' ) </script>

  Открывается окошко, где ( /Requestor не авторизуется сам собой !!! )
выдает формочку для ввода логин/пароль. По POST он ее обрабатывает, и
если ввели правильный пароль, то он выдает cookies с зашифрованными
логин/пароль и следующий документ :

 <script> opener.location.reload(true); window.close() </script>

  А в документе opener лежит window.open(...), а URL документа там тот,
который мы изначально запрашивали. То есть вызывается искомый документ.

  Знаю, в этом методе есть несколько подводных камней :

1. Наличие JavaScript. Но моя система ( к которой присабачена 
   авторизация ) и так активно его юзает.

2. Оно работает с Mozilla/3.0 и выше. В IE3 - нет. Ну и [censored] с ним.

3. Оно не будет работать, если документ ( если нужно запросить пароль )
   вызывается методом POST -- Netscape выдаст что-то типа 'Repost form
   data' или тому подобное. Ну что ж.... приходится мириться.

4. Долго... знаю, надо модуль писать. Тока никто мне тут не рассказал, как
   это делать и/или где об этом почитать.

  Ну а в остальном -- вполне рабочая система. Элементарный LOGOGUT 
( можно даже на JavaScript ), гибкость и т.п. Система работает уже полгода
и никаких нареканий. Да и потом -- вспомним, что обычный Authorization
передает пароль в открытом виде ( кодирование по Base64 не в счет ). А
тут можно этот Cookies так закриптовать ( благо, алгоритм-то свой можно
поставить!!! ), что шиш разгадаешь.

  Вобчем, вот такие пироги... а вообще sorry за флейм. Если таких писем
не стоит сюда кидать ( если они под флейм попадают ) -- Alex ты скажи!
Впредь буду.... более краток :-)))

  За сим все, всем приветы, всегда ваш,
								Феликс.
=============================================================================
=               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.