首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用jssip库连接到我的Asterisk服务器,密码错误

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

Stack Overflow用户
提问于 2017-11-11 03:25:08
回答 2查看 2.6K关注 0票数 0

我可以使用jssip连接到我的freePbx服务器。但是在Asterisk日志中使用错误的密码注册失败。我可以使用相同的PjSip扩展密码连接和注册none WebRtc和WebSocket客户端。

它在.net库Ozeki中使用相同的用户、pass等进行工作,但在nodejs和webRtc中不起作用。

星号日志:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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日志:

代码语言:javascript
复制
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' }
EN

回答 2

Stack Overflow用户

发布于 2017-11-18 19:19:51

正如预期的那样,注册过程遵循RFC3261中指定的过程,也就是说,第一个寄存器由401错误响应应答,该响应导致第二个寄存器具有授权信息。在这种情况下,服务器会拒绝这些数据。

代码语言:javascript
复制
170 (REGISTER) ---------------------> Asterisk
170 <----------(401 - Not authorized) Asterisk
170 (REGISTER with Auth info) ------> Asterisk
170 <----------------(407 - Rejected) Asterisk

因此,asterisk拒绝注册,因为它不喜欢第二个register消息。

代码语言:javascript
复制
Authorization: Digest algorithm=MD5, username="170", realm="asterisk", nonce="078cc3e4", uri="sip:192.168.0.210:5060", response="26576b92bf68c3d315d480b02d53783c"

领域“星号”与jssip中的配置不同,它也不遵循RFC中指定的内容:

将对收到的请求进行身份验证的用户代理或代理服务器的

操作员必须遵守以下为其服务器创建领域字符串的指导原则:

  • 领域字符串必须全局唯一。建议领域字符串包含主机名或域名,遵循RFC2617的第3.2.1节中的建议。

  • 领域字符串应提供可呈现给用户的人类可读标识符。

因此,您应该将sip.conf配置为在星号中定义领域字符串,以遵循上述规则。无论如何,请注意,即使jssip配置了不同的“领域”,在第二个寄存器中也会使用第一个响应中的字段。所以,我不认为这是问题所在。

另一个是不包括用户名的第二个寄存器中的uri="sip:192.168.0.210:5060“。如果它遵循下一个示例,取自"sip:170:192.168.0.210:5060“

代码语言:javascript
复制
Authorization: Digest username="bob",..., uri="sip:bob@biloxi.com",..."

我不明白为什么uri不包含在jssip.conf中指定的用户名。我将从配置中删除"authorization_user“,因为它是一个可选参数和测试。

票数 2
EN

Stack Overflow用户

发布于 2020-08-18 06:22:55

禁用chan_sip (设置>高级设置-拨号计划和操作- SIP通道Driver=pjsip)。然后它就成功了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47229835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档