Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Разработка / SIP авторизация и MD5

SIP авторизация и MD5

Сообщений: 104

SIP авторизация и MD5

Если на * в sip.conf у абонента не указан secret, то обычного сообщения с заголовком REGISTER достаточно. Но если пассворд указан, все несколько сложнее.
На попытку REGISTER мне * отвечает: "401 Unautorized", и в одном из полей присылает строку следующего содержания:

WWW-Authenticate: Digest realm="asterisk", nonce="5ca095d4"


где nonce - это уникальная комбинация для каждой сессии, это понятно. Запускаем tcpdump и наблюдаем, что клиент (в моем конкретном случае - Phoner) отвечает:

Authorization: Digest username="501", realm="asterisk", nonce="5ca095d4", uri="sip:192.168.1.46", response="9619ee960379f024f07042081daf8fdc", algorithm=MD5


Где response - это (читаем у Гольдштейна):
<цитата>
Строка, состоящая из 32 шестнадцатиричных разрядов и удостоверяющая, что пользователю известен пароль. Формируется с помошью применения функции хеширования к значениям nonce, nc, cnonce, qop, uri, username, realm, типу запроса и паролю password. По умолчанию хеширование производится по алгоритму MD5.
</цитата>

А теперь собственно вопрос: Что, в каком порядке и каким образом мне нужно собрать в строку, пропустить через МД5, чтобы на выходе получилось 9619ee960379f024f07042081daf8fdc? Или хотя бы где это описано? № RFC?
2005-11-03 18:45

Сообщений: 104

Re: SIP авторизация и MD5

Сорри, нашел уже сам, rfc 2617
Но советам буду рад
2005-11-03 19:05

Сообщений: 104

Re: SIP авторизация и MD5

Расковырял полностью :-) Если кому интересно - поделюсь.
Астериск присылает два параметра - realm и nonce. Тип аутентификации - Digest
Ответ (response) вычисляется следующим образом (приведу код на паскале):



function CalculateResponce(User, Realm, Password, Method, URI, Nonce: String): String;
var
A1, A2: String;
begin
A1 := MD5Print(MD5String(User+':'+Realm+':'+Password));
A2 := MD5Print(MD5String(Method+':'+URI));
Result := MD5Print(MD5String(A1+':'+Nonce+':'+A2));
end;


Файл md5.pas можно взять здесь: http://www.fichtner.net/delphi/md5.delphi.phtml
2005-11-04 13:39

Сообщений: 1

Re: SIP авторизация и MD5

Что-то аналогичное на Perl не пашет совсем:

use Digest::MD5 qw(md5 md5_hex md5_base64);

$A1 = md5_hex($user.":".$realm.":".$password);
$A2 = md5_hex($method.":".$uri);
$res = md5_hex($A1.":".$nonce.":".$A2);

может я что-то не так понял ?
2006-05-03 14:01

Откуда: Санкт-Петербург
Сообщений: 541

Re: SIP авторизация и MD5

http://sofia-sip.sourceforge.net/refdocs/sofia_sip_conformance.html
http://www.faqs.org/rfcs/rfc2069.html
2006-05-03 22:10

Сообщений: 1

Re: SIP авторизация и MD5

Нельзя ли показать пример,например что содержат переменные
User, Realm, Password, Method, URI, Nonce
и что вернул Result?
2006-07-19 12:13

Сообщений: 5

Re: SIP авторизация и MD5

Немного напутал :) ... Вот пример авторизации через MD5 в IAX2:

<user> - имя пользователя при обычной авторизации, например Burus
<realm> - по умолчанию asterisk
<secret> - пароль пользователя при обычной авторизации, например 123456

сервер дребует от пользователя строку с MD5 хэшем.

в консоле линукса ее можно получить так

$echo "<user>:<realm>:<secret>" | md5sum
для нашего примера
$echo "Burus:asterisk:123456" | md5sum

результат отправляем серверу:
de7c3109b923207da40b2fc73fa78697




2006-08-08 22:02

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru