Я пытаюсь создать небольшой клиент 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
, что может быть проблема? Спасибо!
Это нормально, вы отправляете РЕГИСТР, сервер говорит, что вы несанкционирован, и отправляет вам заголовок WWW-Authenticate, который необходимо использовать для вычисления ваших учетных данных. То есть вы должны аутентифицироваться самостоятельно - если вы пишете собственный SIP-клиент, вам нужно внимательно прочитать спецификацию SIP и выполнить/реализовать полный протокол SIP. – nos
Хорошо, спасибо! Я прочитал много документов о протоколе SIP, но никто не объясняет этот конкретный шаг в деталях ... любое предложение о том, что я должен искать и/или любую ссылку, с которой я могу попробовать? – user2959923
Я нашел объяснение в Википедии по этой ссылке: http://en.wikipedia.org/wiki/Digest_access_authentication говорит, что я должен рассчитать MD5 HA1 и HA2, затем ответ. HA1 = MD5 (имя пользователя: царство: пароль), и это понятно, но как насчет HA2 = MD5 (метод: digestURI)? где я могу получить переменную «метод» и «digestURI»? – user2959923