Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

WWW-авторизация   Найти похожие ветки 

 
Pat ©   (2004-02-25 19:03) [0]

Существует протокол SIP, который для регистрации пользователя на сервере использует WWW-авторизацию, описаную в RFC 2617 (всю инфу я брал оттуда). Есть некая программа, которая успешно использует данный алгоритм. Мне удалось перехватить траффик, передаваемый и получаемый этой программой.
Имя пользователя - Pat
Пароль - password
Входящий запрос от сервера на авторизацию:
WWW-Authenticate: Digest
realm="Tario Networks",
nonce="403cb95b62b32b8517ecfcafc74b0242"

Исходящий запрос на авторизацию от программы на сервер:
Authorization: Digest
username="Pat",
realm="Tario Networks",
nonce="403cb95b62b32b8517ecfcafc74b0242",
response="d0bae9c1d93a3e068a3e23589b678d60"
uri="sip:Pat@212.53.35.244"

Передо мной стоит задача - зная имя пользователя и пароль пройти авторизацию на сервере. Пытаюсь получить строку response вручную, начитавшись сказок на ночь :-)) (RFC 2617)

Из RFC 2617 для данного примера я получил следующий алгоритм:
unq("X") = X
H(data) = MD5(data)
KD(secret, data) = H(concat(secret, ":", data))
request-digest  =<"><KD(H(A1),unq(nonce-value)":"H(A2))><">

A1 = unq(username-value) ":" unq(realm-value) ":" passwd
 where passwd   = < user"s password >

A2 = Method ":" digest-uri-value

Method = 5.1.1 in RFC 2616
Поле Method я взял = "GET"

A1 = Pat:Tario Networks:password
A2 = GET:sip:Pat@212.53.35.244
H(A1) = f22688dc8585618b67e907c6a2ddae9c
H(A2) = 537e6f4eb51c8670ba53da5103c1d81a
request-digest=MD5(f22688dc8585618b67e907c6a2ddae9c:
403cb95b62b32b8517ecfcafc74b0242:537e6f4eb51c8670ba53da5103c1d81a) = 42ff0a9d629c1ab6d2fd89d9f77d6017

Как видно результат не совпадает с "эталоном" :-(((
Если кто сталкивался с WWW-авторизацией, расскажите что я делаю не так.


 
Reindeer Moss Eater ©   (2004-02-26 08:45) [1]

Где заголовок сервера с ответом 401?
Указал ли он опцию "qop" и если да, то чему равно его значение?


 
Reindeer Moss Eater ©   (2004-02-26 10:03) [2]

Хотя если был бы указан qop, с клиента полетел бы cnonce, а его нет.
Сдается мне что 2617 никакого отношения к взаимодействию программы и севера не имеет. Тем более что sip это из области телефонии


 
Pat ©   (2004-02-26 14:40) [3]

>Где заголовок сервера с ответом 401?
Это есть, просто я выбрал всю нужную информацию для авторизации. Тем более, что все примеры в RFC2617 идут в такой же форме. Поля qop нету. Кстати, пример из RFC2617 с полем qop у меня сошелся.

>Тем более что sip это из области телефонии
Да, это так, но ведь я ж написал: "протокол SIP, который для регистрации пользователя на сервере использует WWW-авторизацию, описаную в RFC 2617". Это взято из документации на SIP.


 
Reindeer Moss Eater ©   (2004-02-26 14:48) [4]

Если сервер указал qop, на него надо реагировать.
Формула вычисления request-digest будет не та, что ты привел здесь.

В ней будут участововать nonce, nonce_count, cnonce, qop.

<">KD(H(a1),nonce":"nonce_count":"cnonce":"qop":"h(a2))<">


 
Reindeer Moss Eater ©   (2004-02-26 14:51) [5]

Кроме того, в запросе сервера не виден алгоритм.
В ответе клиента он тоже не указан.
С чего ты взял, что та программа использует MD5?


 
Pat ©   (2004-02-26 17:12) [6]

>Reindeer Moss Eater ©   (26.02.04 14:48) [4]
Поля qop нету
Я написал всю информацию, необходимую для авторизации, которая передается между сервером и клиентом.

>Кроме того, в запросе сервера не виден алгоритм.
RFC2617:
3.1.3 Representation of digest values
An optional header allows the server to specify the algorithm used to create the checksum or digest. By default the MD5 algorithm is used and that is the only algorithm described in this document.

>С чего ты взял, что та программа использует MD5?
Программа-клиент не имеет ничего общего с сервером кроме протокола SIP. И друг друга они отлично "понимают". Поэтому я решил, что по дефолту используется MD5.

P.S. Если не сложно, посмотрите исходник из RFC: http://www.faqs.org/rfcs/rfc2617.html
По нему, вроде бы, я все делаю правильно. Хотя с сями у меня проблемы, может где и ошибаюсь. :-(


 
Reindeer Moss Eater ©   (2004-02-26 17:31) [7]

Имеем специализированный сервер и специализрованную программу клиент.
Оба декларируют, что используют RFC2617 при авторизации.
Однако респонс, вычисленный по 2617 не совпадает с реальным и (валидным) респонсом клиента.

Вот почему и появляются сомнения описанные в [5].
Возьми браузер(а не программу) и натрави его на этот сервер.
Заснифери протокол обмена.
Думаю что он выдаст точно такой же респонс как и тот, что вычислил ты.


 
Reindeer Moss Eater ©   (2004-02-26 17:34) [8]

А насчет умолчаний в 2617 по поводу алгоритмов, так там описаны случаи proxy и www авторизации.
Что же касается sip, то ему никто не мешает использовать свои умолчания, используя при этом модель описанную в 2617



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
1-1081584683
KEBZ
2004-04-10 12:11
2004.04.25
Button и Label


3-1080462762
Хамс
2004-03-28 12:32
2004.04.25
Как запихнуть в Interbase офскую DB изображение ?


8-1074354648
Ianus
2004-01-17 18:50
2004.04.25
РЕЧЬ, ЕЕ рапознование....


14-1080838019
Desdechado
2004-04-01 20:46
2004.04.25
Как для конкретного юзера винды ХР заблокировать флоп


6-1077500554
elf_123
2004-02-23 04:42
2004.04.25
Система&amp;Email





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский