ПРОЕКТЫ 


  АРХИВ 


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: 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@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.