我可以用jssip连接到我的freePbx服务器。 但是在Asterisk Logs中注册错误密码。 我可以使用相同的密码连接并注册没有WebRtc和WebSocket客户端用于我的PjSip扩展。
它在.net库Ozeki中使用相同的用户,传递等,但在nodejs和webRtc中它不起作用。
星号日志:
ERROR[24788]: res_http_websocket.c:506 ws_safe_read: Error readng from webScoket: Connection rest by peer.
NOTICE[33279]: chan_sip.c28486 handle_request_register: Registeration from '<sip:170@192.168.0.210>' faild for 192.168.0.250:43751 - wrong password
jssip conf:
var socket = new JsSIP.WebSocketInterface('ws://192.168.0.210:8089/ws');
var configuration = {
sockets : [ socket ],
authorization_user: '170',
uri : 'sip:170@192.168.0.210',
ws_servers : 'ws://192.168.0.210:8089/ws',
password : '856589',
realm : '192.168.0.210',
display_name : '170',
contact_uri : 'sip:170@192.168.0.210'
};
jssip log:
olden@golden-client:~/LocalFiles/projects/jssip$ node ./index.js JsSIP version 3.0.21 +0ms jssip-node-websocket new() [url:"ws://192.168.0.210:8088/ws", options:undefined] +0ms
JsSIP:UA new() [configuration:{ sockets: [ NodeWebSocket { _url: 'ws://192.168.0.210:8088/ws', _options: {}, _sipUri: 'sip:192.168.0.210:8088;transport=ws', _viaTransport: 'WS', _ws: null } ], authorization_user: '170', uri: 'sip:170@192.168.0.210:5060', ws_servers: 'ws://192.168.0.210:8088/ws', password: '170170', realm: '192.168.0.210', display_name: '170', contact_uri: 'sip...@192.168.0.210' }] +0ms
JsSIP:Transport new() +0ms
JsSIP:UA configuration parameters after validation: +15ms
JsSIP:UA - authorization_user: "170" +0ms
JsSIP:UA - password: NOT SHOWN +0ms
JsSIP:UA - realm: "192.168.0.210" +0ms
JsSIP:UA - ha1: NOT SHOWN +0ms
JsSIP:UA - display_name: "170" +0ms
JsSIP:UA - uri: sip:170@192.168.0.210:5060 +0ms
JsSIP:UA - contact_uri: {"_parameters":{},"_headers":{},"_scheme":"sip","_user":"170","_host":"192.168.0.210"} +0ms
JsSIP:UA - instance_id: "f3a58a94-b426-4a8d-8b15-9f7208a42f9b" +0ms
JsSIP:UA - use_preloaded_route: false +0ms
JsSIP:UA - session_timers: true +0ms
JsSIP:UA - no_answer_timeout: 60000 +0ms
JsSIP:UA - register: true +0ms
JsSIP:UA - register_expires: 600 +0ms
JsSIP:UA - registrar_server: sip:192.168.0.210:5060 +0ms
JsSIP:UA - connection_recovery_max_interval: null +0ms
JsSIP:UA - connection_recovery_min_interval: null +0ms
JsSIP:UA - via_host: "192.168.0.210" +0ms
JsSIP:UA start() +0ms
JsSIP:Transport connect() +1ms
connecting
jssip-node-websocket connect() +18ms
jssip-node-websocket WebSocket connecting [url:"ws://192.168.0.210:8088/ws"] +0ms
jssip-node-websocket WebSocket open [url:"ws://192.168.0.210:8088/ws"] +18ms
connected
JsSIP:Transport send() +22ms
JsSIP:Transport sending message:
JsSIP:Transport
JsSIP:Transport REGISTER sip:192.168.0.210:5060 SIP/2.0
JsSIP:Transport Via: SIP/2.0/WS 192.168.0.210;branch=z9hG4bK160956
JsSIP:Transport Max-Forwards: 69
JsSIP:Transport To: <sip:170@192.168.0.210:5060>
JsSIP:Transport From: "170" <sip:170@192.168.0.210:5060>;tag=s9bkng5emf
JsSIP:Transport Call-ID: 6ra4f68tegdmqllfoa7kja
JsSIP:Transport CSeq: 1 REGISTER
JsSIP:Transport Contact: <sip...@192.168.0.210>;+sip.ice;reg-id=1;+sip.instance="<urn:uuid:f3a58a94-b426-4a8d-8b15-9f7208a42f9b>";expires=600
JsSIP:Transport Expires: 600
JsSIP:Transport Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO
JsSIP:Transport Supported: path,gruu,outbound
JsSIP:Transport User-Agent: JsSIP 3.0.21
JsSIP:Transport Content-Length: 0
JsSIP:Transport
JsSIP:Transport
JsSIP:Transport +0ms
jssip-node-websocket send() +3ms
jssip-node-websocket WebSocket message received +3ms
JsSIP:Transport received text message:
JsSIP:Transport
JsSIP:Transport SIP/2.0 401 Unauthorized
JsSIP:Transport Via: SIP/2.0/WS 192.168.0.210;branch=z9hG4bK160956;received=192.168.0.3;rport=35832
JsSIP:Transport From: "170" <sip:170@192.168.0.210:5060>;tag=s9bkng5emf
JsSIP:Transport To: <sip:170@192.168.0.210:5060>;tag=as0f727a9b
JsSIP:Transport Call-ID: 6ra4f68tegdmqllfoa7kja
JsSIP:Transport CSeq: 1 REGISTER
JsSIP:Transport Server: FPBX-13.0.192.19(13.12.1)
JsSIP:Transport Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
JsSIP:Transport Supported: replaces, timer
JsSIP:Transport WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="078cc3e4"
JsSIP:Transport Content-Length: 0
JsSIP:Transport
JsSIP:Transport
JsSIP:Transport +3ms
JsSIP:DigestAuthentication authenticate() | response generated +0ms
JsSIP:Transport send() +10ms
JsSIP:Transport sending message:
JsSIP:Transport
JsSIP:Transport REGISTER sip:192.168.0.210:5060 SIP/2.0
JsSIP:Transport Via: SIP/2.0/WS 192.168.0.210;branch=z9hG4bK4224730
JsSIP:Transport Max-Forwards: 69
JsSIP:Transport To: <sip:170@192.168.0.210:5060>
JsSIP:Transport From: "170" <sip:170@192.168.0.210:5060>;tag=s9bkng5emf
JsSIP:Transport Call-ID: 6ra4f68tegdmqllfoa7kja
JsSIP:Transport CSeq: 2 REGISTER
JsSIP:Transport Authorization: Digest algorithm=MD5, username="170", realm="asterisk", nonce="078cc3e4", uri="sip:192.168.0.210:5060", response="26576b92bf68c3d315d480b02d53783c"
JsSIP:Transport Contact: <sip...@192.168.0.210>;+sip.ice;reg-id=1;+sip.instance="<urn:uuid:f3a58a94-b426-4a8d-8b15-9f7208a42f9b>";expires=600
JsSIP:Transport Expires: 600
JsSIP:Transport Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO
JsSIP:Transport Supported: path,gruu,outbound
JsSIP:Transport User-Agent: JsSIP 3.0.21
JsSIP:Transport Content-Length: 0
JsSIP:Transport
JsSIP:Transport
JsSIP:Transport +0ms
jssip-node-websocket send() +11ms
jssip-node-websocket WebSocket message received +1ms
JsSIP:Transport received text message:
JsSIP:Transport
JsSIP:Transport SIP/2.0 403 Forbidden
JsSIP:Transport Via: SIP/2.0/WS 192.168.0.210;branch=z9hG4bK4224730;received=192.168.0.3;rport=35832
JsSIP:Transport From: "170" <sip:170@192.168.0.210:5060>;tag=s9bkng5emf
JsSIP:Transport To: <sip:170@192.168.0.210:5060>;tag=as0f727a9b
JsSIP:Transport Call-ID: 6ra4f68tegdmqllfoa7kja
JsSIP:Transport CSeq: 2 REGISTER
JsSIP:Transport Server: FPBX-13.0.192.19(13.12.1)
JsSIP:Transport Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
JsSIP:Transport Supported: replaces, timer
JsSIP:Transport Content-Length: 0
JsSIP:Transport
JsSIP:Transport
JsSIP:Transport +3ms
{ response:
IncomingResponse {
data: 'SIP/2.0 403 Forbidden\r\nVia: SIP/2.0/WS 192.168.0.210;branch=z9hG4bK4224730;received=192.168.0.3;rport=35832\r\nFrom: "170" <sip:170@192.168.0.210:5060>;tag=s9bkng5emf\r\nTo: <sip:170@192.168.0.210:5060>;tag=as0f727a9b\r\nCall-ID: 6ra4f68tegdmqllfoa7kja\r\nCSeq: 2 REGISTER\r\nServer: FPBX-13.0.192.19(13.12.1)\r\nAllow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE\r\nSupported:replaces, timer\r\nContent-Length: 0\r\n\r\n',
headers:
{ Via: [Array],
From: [Array],
To: [Array],
'Call-ID': [Array],
CSeq: [Array],
Server: [Array],
Allow: [Array],
Supported: [Array],
'Content-Length': [Array] },
method: 'REGISTER',
via:
{ protocol: 'SIP',
transport: 'WS',
host_type: 'IPv4',
host: '192.168.0.210',
branch: 'z9hG4bK4224730',
received: '192.168.0.3' },
via_branch: 'z9hG4bK4224730',
call_id: '6ra4f68tegdmqllfoa7kja',
cseq: 2,
from: NameAddrHeader { _uri: [Object], _parameters: [Object], _display_name: '170' },
from_tag: 's9bkng5emf',
to:
NameAddrHeader {
_uri: [Object],
_parameters: [Object],
_display_name: undefined },
to_tag: 'as0f727a9b',
body: '',
sdp: null,
status_code: 403,
reason_phrase: 'Forbidden' },
cause: 'Rejected' }
答案 0 :(得分:1)
如预期的那样,REGISTRATION过程遵循RFC3261中指定的过程,也就是说,第一个REGISTER由401错误响应应答,该错误响应导致第二个REGISTER具有授权信息。在这种情况下,服务器会拒绝这些数据。
170 (REGISTER) ---------------------> Asterisk
170 <----------(401 - Not authorized) Asterisk
170 (REGISTER with Auth info) ------> Asterisk
170 <----------------(407 - Rejected) Asterisk
因此,星号拒绝寄存器,因为它不喜欢第二条REGISTER消息。
Authorization: Digest algorithm=MD5, username="170", realm="asterisk", nonce="078cc3e4", uri="sip:192.168.0.210:5060", response="26576b92bf68c3d315d480b02d53783c"
嗯,领域“asterisk”在jssip中配置不一样,并且它不遵循RFC中指定的内容:
将验证收到的请求的用户代理或代理服务器的运营商必须遵守以下准则,以便为其服务器创建领域字符串:
领域字符串必须是全局唯一的。根据RFC 2617 [17]的第3.2.1节的建议,建议领域字符串包含主机名或域名。
领域字符串应该提供一个可以呈现给用户的人类可读标识符。
因此,您应该配置sip.conf以在星号中定义领域字符串以遵循上述规则。无论如何,请注意,即使jssip配置了不同的“领域”,在第二个REGISTER中也会使用第一个响应中的字段。所以,我不认为这是问题。
其他的是uri =“sip:192.168.0.210:5060”在第二个REGISTER中不包含用户名。如果它遵循下一个例子,取自“sip:170:192.168.0.210:5060”
Authorization: Digest username="bob",..., uri="sip:bob@biloxi.com",..."
我不清楚为什么uri不包含jssip.conf中指定的用户名。我会从配置中删除“authorization_user”,因为它是一个可选参数和测试。
答案 1 :(得分:0)
禁用chan_sip(设置>高级设置-拨号计划和操作-SIP通道驱动程序= pjsip)。然后它起作用了!