Автор Тема: Повторная аутентификация  (Прочитано 18462 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #15 : 16 Марта 2002, 18:30:16 »
Dm
Поспорили как-то php-маньяк и perl-извращенец :)
(я на Perl пишу)
 
А почему HTTP/1.0, а не HTTP/1.1 и что такое "isset"?

$PHP_AUTH_USER - если я правильно понял, то же, что и $ENV{\'REMOTE_USER\'}. Так вот он у меня всегда определен (броузер, зараза, посылает - см. выше)
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #16 : 16 Марта 2002, 18:47:39 »
алгоритм такой:
смотрим, броузер передал $PHP_AUTH_USER (имя пользователя)?
если да - пишем приветствие.
если нет - скрипт выдает 401 статус.

не важно, php или perl, главное, чтобы сервер броузеру выдал:

HTTP
/1.1 401 Authorization Required 
Date
Sat16 Mar 2002 15:44:44 GMT 
Server
Apache/1.3.20 
WWW
-AuthenticateBasic realm="My Realm" Connectionclose Content-Typetext/html 
Text to send 
if user hits Cancel button 

(этот пример взят из рабочей системы)
имхо, не должно быть пустой странички.
с уважением,
магистр белой магии.

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #17 : 16 Марта 2002, 18:48:25 »
PS. проверь, хоть telnet\'ом, что выдает веб-сервер.
с уважением,
магистр белой магии.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #18 : 16 Марта 2002, 19:53:49 »
Да, то что сервер выдает именно это, я уверен.
А поймать ответ никак не могу: telnet закрыт.
Скачал вот для этого Iris 3.7, но никак не могу с ней справиться.
По поводу пустой страницы: не в ней дело. Если после этого заголовка я что-то пишу, то, разумеется, получаю не пустую страницу. НО, обновив эту страницу, попадаю на ту, которая была запрошена перед повторной аутентификацией.

А по логам совершенно четко видно, что броузер 2 раза посылает запрос и второй раз берет пароль из кэша! - вот с чем надо бороться.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #19 : 16 Марта 2002, 21:02:07 »
YA
имел в виду, просто и банально эмулировать броузер, послать запрос серверу, что-то типа: "GET / HTTP/1.0\\nHost: yourhost.com\\n\\n"
и посмотреть, что он вернет.
с уважением,
магистр белой магии.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #20 : 16 Марта 2002, 21:31:11 »
Что-то я уже тормозить начинаю.
Dm, что посылать и что я должен получить в ответ, я понимаю. Объясни плиз, как ловить ответ, если никакой спец. софт не доступен?
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #21 : 16 Марта 2002, 22:47:58 »
задача: необходимо посмотреть ответ сервера с заголовками.
реализовать можно любым способом:
т.е. вместо IE использовать или telnet, или свой скрипт - не важно.

подключаемся к серверу на порт 80,
посылаем ему:
GET /address-to-your-script HTTP/1.0\\n
Host: server.com\\n\\n
смотрим, что ответит.

PS. могу дать пример на php :)
с уважением,
магистр белой магии.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #22 : 16 Марта 2002, 23:26:06 »
Цитировать
могу дать пример на php

Угу, буду блгодарен! Пытаюсь сделать на перле... торможу все больше... может утром будет легче...

Теперь после ввода неверного пароля уже не удается вернуться назад - помог заголовок "Expires". Так что проблемы остались только с отменой.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #23 : 17 Марта 2002, 00:17:46 »

<?

$fname "/auth.php"// файл на сервере
$fhost "server.com"// имя хоста
$puts "GET $fname HTTP/1.0\\nHOST: $fhost\\n\\n";

$x="";
$fp fsockopen($fhost80, &$errno, &$errstr30) or die("error");
fputs($fp,$puts);
while(!
feof($fp)) $x.=fgets($fp,128);
    
fclose($fp);

echo 
$x;

?>


а у тебя на сервере php работает?
с уважением,
магистр белой магии.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #24 : 17 Марта 2002, 00:56:37 »
Да, PHP работает.

Спасибо за пример! Утром все проверю.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #25 : 17 Марта 2002, 12:55:07 »
Dm
Утором стало легче :)
Все проверил: сервер (и скрипт) выдает все правильно!
Стал проверять у других: понял, что абсолютно работающий вариант (когда "Отмена" не помогает) повторной аутентификации видел только (!) там, где непосредственно перед ней меняется пароль доступа - в этом случае броузер уже точно не может взять пароль из кэша.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #26 : 17 Марта 2002, 21:01:33 »
YA
ой... что-то я тебя несколько не понял...
фишка в том, что броузер неожиданно должен получить 401, тогда логин/пароль обнуляться.
с уважением,
магистр белой магии.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #27 : 17 Марта 2002, 22:06:28 »
Dm
Да, он его и получает, но если пользователь отказывается вводить логин и пароль, IE6.0 отказывается забывать старые логин с паролем и продолжает их посылать! Будет время - проверю разными броузерами и версиями.
А Вы видели где-нибудь в сети работающий вариант? Я попробую повторить этот фокус.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #28 : 17 Марта 2002, 22:22:29 »
YA
а в качестве странички для отмены - пустота?
(после заголовков ничего не идет)
имхо - это не правильно.
с уважением,
магистр белой магии.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Повторная аутентификация
« Ответ #29 : 17 Марта 2002, 22:42:54 »
На обработку этой ошибки можно свою страницу подставить через ErrorDocument 401 .
Тогда будет выдаваться не пустая страница, а та, что ты "подложишь" под ошибку. :)
AS IS...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28