powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / WWW-авторизация
6 сообщений из 6, страница 1 из 1
WWW-авторизация
    #32421745
Pat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pat
Гость
Существует протокол 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-авторизацией, расскажите что я делаю не так.
...
Рейтинг: 0 / 0
WWW-авторизация
    #32421835
rst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я всегда basic делал :0-)
Можно заметить ,что конечная строка зависит от метода выбранного в A2
а что на POST и PUT получается?
Или все равно сервер не берет?
...
Рейтинг: 0 / 0
WWW-авторизация
    #32421995
Snow_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо юзать библиотеку WinInet, берет на себя массу ломовой работы. В том числе и авторизацию.
...
Рейтинг: 0 / 0
WWW-авторизация
    #32422615
Pat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pat
Гость
>я всегда basic делал :0-)
К сожалению, необходимо делать только digest

>Можно заметить ,что конечная строка зависит от метода выбранного в A2
>а что на POST и PUT получается?
Тоже не совпадает. Тем более, что в RFC2617 идет исходник на С, в нем поле Method = "GET".

Кстати, здесь используется "упрощенная" схема алгоритма, где не присутствует поле qop. А пример с полем qop в RFC2617 у меня сошелся. МОжет что-то не договаривают в RFC? :-(
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
WWW-авторизация
    #33390044
y77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
y77
Гость
Поле метод нужно брать из SIP сообщения в котором отсылается
Authorization: Digest
username="Pat" и т.д. ...
скорее всего это REGISTER (GET - это для HTML, а не для SIP),
осталдьное все вроде бы верно
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
WWW-авторизация
    #35630125
Shram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас столкнулся с такой же проблемой...
Вот сессия авторизации

Запрос

Код:
1.
2.
3.
4.
5.
6.
7.
        WWW-Authenticate: Digest realm="huawei",\r\n nonce="31ea81bed15f3608ae21f5452b1191fa",domain="sip:huawei.com",\r\n stale=false,algorithm=MD5
            Authentication Scheme: Digest
            Realm: "huawei"
            Nonce Value: "31ea81bed15f3608ae21f5452b1191fa"
            Authentication Domain: "sip:huawei.com"
            Stale Flag: false
            Algorithm: MD5


Ответ

Код:
1.
2.
3.
4.
5.
6.
7.
8.
 Authorization: Digest username="78124561220",realm="huawei",nonce="31ea81bed15f3608ae21f5452b1191fa",uri="sip:89.248.206.15",response="95b50d801f28e6ddc79c700ec1a40892",algorithm=MD5
            Authentication Scheme: Digest
            Username: "78124561220"
            Realm: "huawei"
            Nonce Value: "31ea81bed15f3608ae21f5452b1191fa"
            Authentication URI: "sip:89.248.206.15"
            Digest Authentication Response: "95b50d801f28e6ddc79c700ec1a40892"
            Algorithm: MD5


Пароль я заведомо знаю: test
Пишу скрипт по RFC:

Код:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?php
$user = "78124561220";
$passwd = "test";
$realm = "huawei";
$nonce = "31ea81bed15f3608ae21f5452b1191fa";
$method = "REGISTER";
$uri = "sip:89.248.206.15";
$check = "95b50d801f28e6ddc79c700ec1a40892";



$a1 = $user . ':' . $realm . ':' . $passwd;
$a2 = $method . ':' . $uri;
$valid_response = md5(md5($a1) . ':' . $nonce . ':' . md5($a2));
echo "<br>".$valid_response;
echo "<br>$check";
?>


В ответ получаю
Код:
1.
2.
a4c4988841d8b4199ff459cd94e012a0
95b50d801f28e6ddc79c700ec1a40892


т.е. хеши не совпадают!!!
В чем может быть проблема????
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / WWW-авторизация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]