Сбой аутентификации прокси SIP - PullRequest
0 голосов
/ 03 мая 2011

Я разрабатываю приложение агента пользователя SIP, которое подключается к серверу Asterisk и пытается выполнить исходящий вызов. Я использую реализацию NIST API JAIN SIP.

Приложение сначала успешно регистрируется. Затем, когда приложение передает запрос INVITE на программный телефон X-Lite SIP, Asterisk отвечает 407 (Требуется проверка подлинности прокси-сервера). Ответ содержит заголовок Proxy-Authenticate. Мое приложение снова отправляет сообщение INVITE, но на этот раз с заголовком Proxy-Authorization, на который Asterisk отвечает 488 (здесь не приемлемо).

Здесь следует диалог SIP («>>» обозначает исходящие сообщения; «<<» обозначает входящие сообщения): </p>

>> REGISTER sip:10.0.84.30:5060 SIP/2.0<br> Call-ID: 7f2d15884ab375fc7b5d32fdd28426d5@10.0.85.3<br> CSeq: 1 REGISTER<br> From: <sip:301@asterisk>;tag=0vmZig<br> To: <sip:301@asterisk><br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bK493cd4b63090dc9a8027931937b737c9353835 Max-Forwards: 70<br> Contact: <sip:10.0.85.3:5060><br> Expires: 300<br> Content-Length: 0

<< SIP/2.0 100 Trying<br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bK493cd4b63090dc9a8027931937b737c9353835;received=10.0.85.3<br> From: <sip:301@asterisk>;tag=0vmZig<br> To: <sip:301@asterisk><br> Call-ID: 7f2d15884ab375fc7b5d32fdd28426d5@10.0.85.3<br> CSeq: 1 REGISTER<br> User-Agent: Asterisk PBX (switchvox)<br> Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY<br> Contact: <sip:301@10.0.84.30><br> Content-Length: 0

<< SIP/2.0 401 Unauthorized<br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bK493cd4b63090dc9a8027931937b737c9353835;received=10.0.85.3<br> From: <sip:301@asterisk>;tag=0vmZig<br> To: <sip:301@asterisk>;tag=as4d134cc6<br> Call-ID: 7f2d15884ab375fc7b5d32fdd28426d5@10.0.85.3<br> CSeq: 1 REGISTER<br> User-Agent: Asterisk PBX (switchvox)<br> Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY<br> Contact: <sip:301@10.0.84.30><br> WWW-Authenticate: Digest realm="asterisk",nonce="27ca4a51"<br> Content-Length:0

>> REGISTER sip:10.0.84.30:5060 SIP/2.0<br> CSeq: 2 REGISTER<br> From: <sip:301@asterisk>;tag=0vmZig<br> To: <sip:301@asterisk><br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bKe339b4ed9edc5d75379673b6dec7fc42353835 Max-Forwards: 70<br> Contact: <sip:10.0.85.3:5060><br> Expires: 300<br> Authorization: Digest username="301",realm="asterisk",nonce="27ca4a51",response="cfdcdff7ddee99d10c3099e88ffb73af",algorithm=MD5,uri="sip:10.0.84.30:5060",nc=00000001<br> Call-ID: 7f2d15884ab375fc7b5d32fdd28426d5@10.0.85.3<br> Content-Length: 0

<< SIP/2.0 100 Trying<br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bKe339b4ed9edc5d75379673b6dec7fc42353835;received=10.0.85.3<br> From: <sip:301@asterisk>;tag=0vmZig<br> To: <sip:301@asterisk><br> Call-ID: 7f2d15884ab375fc7b5d32fdd28426d5@10.0.85.3<br> CSeq: 2 REGISTER<br> User-Agent: Asterisk PBX (switchvox)<br> Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY<br> Contact: <sip:301@10.0.84.30><br> Content-Length: 0

<< SIP/2.0 200 OK<br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bKe339b4ed9edc5d75379673b6dec7fc42353835;received=10.0.85.3<br> From: <sip:301@asterisk>;tag=0vmZig<br> To: <sip:301@asterisk>;tag=as4d134cc6<br> Call-ID: 7f2d15884ab375fc7b5d32fdd28426d5@10.0.85.3<br> CSeq: 2 REGISTER<br> User-Agent: Asterisk PBX (switchvox)<br> Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY<br> Expires: 300<br> Contact: <sip:10.0.85.3:5060>;expires=300<br> Date: Tue, 03 May 2011 09:37:45 GMT<br> Content-Length: 0

>> INVITE sip:302@asterisk SIP/2.0<br> Call-ID: 003d85b0d0868f6f2a2d8c324d7f1d54@10.0.85.3<br> CSeq: 3 INVITE<br> From: <sip:301@asterisk>;tag=sJSeLA<br> To: <sip:302@asterisk><br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bK6704cd9554c0c8e5bc94bc42b606147a353835 Max-Forwards: 70<br> Contact: <sip:10.0.85.3:5060><br> Route: <sip:10.0.84.30:5060;lr><br> Content-Type: application/sdp<br> Content-Length: 106

v=0<br> o=- 3513403599 3513403599 IN IP4 10.0.85.3<br> s=-<br> c=IN IP4 10.0.85.3<br> t=0 0<br> m=audio 40000 RTP/AVP 3

<< SIP/2.0 407 Proxy Authentication Required<br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bK6704cd9554c0c8e5bc94bc42b606147a353835;received=10.0.85.3<br> From: <sip:301@asterisk>;tag=sJSeLA<br> To: <sip:302@asterisk>;tag=as7358e1b8<br> Call-ID: 003d85b0d0868f6f2a2d8c324d7f1d54@10.0.85.3<br> CSeq: 3 INVITE<br> User-Agent: Asterisk PBX (switchvox)<br> Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY<br> Contact: <sip:302@10.0.84.30><br> Proxy-Authenticate: Digest realm="asterisk",nonce="55deefb6"<br> Content-Length: 0

>> INVITE sip:302@asterisk SIP/2.0<br> CSeq: 4 INVITE<br> From: <sip:301@asterisk>;tag=sJSeLA<br> To: <sip:302@asterisk><br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bK6e3501c0973664fcd7a17affddd23572353835 Max-Forwards: 70<br> Contact: <sip:10.0.85.3:5060><br> Route: <sip:10.0.84.30:5060;lr><br> Content-Type: application/sdp<br> Proxy-Authorization: Digest username="301",realm="asterisk",nonce="55deefb6",response="47e2c7abe625e4a183726e29c035d7e0",algorithm=MD5,uri="sip:302@asterisk",nc=00000001<br> Call-ID: 003d85b0d0868f6f2a2d8c324d7f1d54@10.0.85.3<br> Content-Length: 106

v=0<br> o=- 3513403599 3513403599 IN IP4 10.0.85.3<br> s=-<br> c=IN IP4 10.0.85.3<br> t=0 0<br> m=audio 40000 RTP/AVP 3

<< SIP/2.0 488 Not acceptable here<br> Via: SIP/2.0/UDP 10.0.85.3:5060;branch=z9hG4bK6e3501c0973664fcd7a17affddd23572353835;received=10.0.85.3<br> From: <sip:301@asterisk>;tag=sJSeLA<br> To: <sip:302@asterisk>;tag=as7358e1b8<br> Call-ID: 003d85b0d0868f6f2a2d8c324d7f1d54@10.0.85.3<br> CSeq: 4 INVITE<br> User-Agent: Asterisk PBX (switchvox)<br> Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY<br> Contact: <sip:302@10.0.84.30><br> Content-Length: 0

Что я здесь не так делаю, вызывая ответ 488?

1 Ответ

1 голос
/ 03 мая 2011

Ответ 488 почти наверняка вызван несоответствием кодека между вашим SIP-клиентом и сервером Asterisk. В вашей трассировке SIP ваш клиент запрашивает вызов с использованием кодека GSM, и я предполагаю, что ваш сервер Asterisk настроен на запрет GSM.

Либо заново настройте сервер Asterisk для приема GSM, либо попробуйте изменить свой SDP на использование ULAW или ALAW, поскольку Asterisk довольно редко настраивается так, чтобы не принимать их.

В приведенном ниже примере не указано изменение конца строки m =. 0 соответствует PCMU (ULAW), а 8 соответствует PCMA (ALAW).

v=0
o=- 3513403599 3513403599 IN IP4 10.0.85.3
s=-
c=IN IP4 10.0.85.3
t=0 0
m=audio 40000 RTP/AVP 0 8
...