2015-04-07 2 views
1

Я пытаюсь создать небольшой клиент VoIP в Visual Studio 2012. Я пытаюсь отправить сообщение SIS REGISTER с ПК на AsteriskNOW PBX через UDP. Устройства являются следующими:Ошибка SIP REGISTER

IP PBX AsteriskNOW: 192.168.1.37 
PC that sends REGISTER message: 192.168.1.104 
SIP account username: 117 
SIP account password: abcd1234 

так, сообщение REGISTER я пытаюсь отправить следующее:

REGISTER sip:192.168.1.37 SIP/2.0 
Via: SIP/2.0/UDP 192.168.1.104:5060;branch=z9hG4bK213760691;rport 
From: <sip:[email protected]>;tag=1270517038 
To: <sip:[email protected]> 
Call-ID: [email protected] 
CSeq: 2001 REGISTER 
Contact: <sip:[email protected]:5060>;reg-id=1; 
+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>" 
Max-Forwards: 70 
User-Agent: Grandstream GXP1165 1.0.6.7 
Supported: path 
Expires: 3600 
Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER, 
UPDATE, MESSAGE 
Content-Length: 0 

конечно, на линии

+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>" 

есть еще ПК, сетевой адаптер MAC, вместо «AABBCCDDEEFF». Однако, когда я пытаюсь отправить сообщение, я получаю следующий ответ от сервера:

SIP/2.0 401 Unauthorized 
Via: SIP/2.0/UDP 
192.168.1.104:5060;rport=5060;received=192.168.1.104;branch=z9hG4bK213760691 
Call-ID: [email protected] 
From: <sip:[email protected]>;tag=1270517038 
To: <sip:[email protected]>;tag=z9hG4bK2137606914 
CSeq: 2001 REGISTER 
WWW-Authenticate: Digest 
realm="asterisk",nonce="1428402653/99967d603c38695f1c328332db91a43b", 
opaque="416e7e1767513798",algorithm=md5,qop="auth" 
Server: FPBX-AsteriskNOW-12.0.43(13.0.1) 
Content-Length: 0 

, что может быть проблема? Спасибо!

+4

Это нормально, вы отправляете РЕГИСТР, сервер говорит, что вы несанкционирован, и отправляет вам заголовок WWW-Authenticate, который необходимо использовать для вычисления ваших учетных данных. То есть вы должны аутентифицироваться самостоятельно - если вы пишете собственный SIP-клиент, вам нужно внимательно прочитать спецификацию SIP и выполнить/реализовать полный протокол SIP. – nos

+0

Хорошо, спасибо! Я прочитал много документов о протоколе SIP, но никто не объясняет этот конкретный шаг в деталях ... любое предложение о том, что я должен искать и/или любую ссылку, с которой я могу попробовать? – user2959923

+0

Я нашел объяснение в Википедии по этой ссылке: http://en.wikipedia.org/wiki/Digest_access_authentication говорит, что я должен рассчитать MD5 HA1 и HA2, затем ответ. HA1 = MD5 (имя пользователя: царство: пароль), и это понятно, но как насчет HA2 = MD5 (метод: digestURI)? где я могу получить переменную «метод» и «digestURI»? – user2959923

ответ