无法使用jssip库连接到我的Asterisk服务器,错误密码错误

时间:2017-11-10 19:25:08

标签: asterisk sip voip freepbx jssip

我可以用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' }

2 个答案:

答案 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)。然后它起作用了!