Asterisk SIP INVITE的星号摘要身份验证;“用户不匹配”;错误

Asterisk SIP INVITE的星号摘要身份验证;“用户不匹配”;错误,asterisk,sip,digest-authentication,Asterisk,Sip,Digest Authentication,我正在建立一个基本的SIPUA。我正在发送以下邀请,如星号控制台中所示(仅显示与身份验证相关的标题): INVITE sip:104@192.168.1.92SIP/2.0 从:“110”;标签=80859256 致: 电话号码:80859256 CSeq:80859256邀请 Via:SIP/2.0/UDP 192.168.1.92:6000;分支=z9hG4bK-80859256 联系人: 作为回应,我面临以下挑战: SIP/2.0 401 Unauthorized Via: SIP/

我正在建立一个基本的SIPUA。我正在发送以下邀请,如星号控制台中所示(仅显示与身份验证相关的标题):

INVITE sip:104@192.168.1.92SIP/2.0
从:“110”;标签=80859256
致:
电话号码:80859256
CSeq:80859256邀请
Via:SIP/2.0/UDP 192.168.1.92:6000;分支=z9hG4bK-80859256
联系人:
作为回应,我面临以下挑战:

 SIP/2.0 401 Unauthorized
 Via: SIP/2.0/UDP 192.168.1.92:6000;branch=z9hG4bK-   80859256;received=127.0.0.1
 From: "110"<sip:110@192.168.1.92>;tag=80859256
 To: <sip:104@192.168.1.92>;tag=as25af7f49
 Call-ID: 80859256
 CSeq: 80859256 INVITE
 Server: Asterisk PBX 13.7.2
 Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
 Supported: replaces, timer
 WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="20e95772"
 Content-Length: 0
SIP/2.0 401未经授权
Via:SIP/2.0/UDP 192.168.1.92:6000;分支=z9hG4bK-80859256;已接收=127.0.0.1
从:“110”;标签=80859256
致:;标签=as25af7f49
电话号码:80859256
CSeq:80859256邀请
服务器:星号PBX 13.7.2
允许:邀请、确认、取消、选项、再见、参考、订阅、通知、信息、发布、消息
支持:替换、定时器
WWW-Authenticate:Digest algorithm=MD5,realm=“asterisk”,nonce=“20e95772”
内容长度:0
我的答复如下:

 ACK sip:104@192.168.1.92 SIP/2.0
 From: "110"<sip:110@192.168.1.92>;tag=80859256
 To: <sip:104@192.168.1.92>;tag=as25af7f49
 Call-ID: 80859256
 CSeq: 80859256 ACK
 Via: SIP/2.0/UDP 192.168.1.92:6000;rport;branch=z9hG4bK-80859256
 Contact: <sip:110@192.168.1.92>
 Content-Length: 0


 INVITE sip:104@192.168.1.92 SIP/2.0
 From: "110"<sip:110@192.168.1.92>;tag=80859256
 To: <sip:104@192.168.1.92>
 Call-ID: 80859256
 CSeq: 80859257 INVITE
 Via: SIP/2.0/UDP 192.168.1.92:6000;rport;branch=z9hG4bK-80859257
 Max-Forwards:5
 Allow: REGISTER, INVITE, ACK, BYE, REFER, NOTIFY, CANCEL, INFO, OPTIONS, PRACK, SUBSCRIBE
 Contact: <sip:110@192.168.1.92>
 Authorization: Digest
 username="110",realm="asterisk", nonce="20e95772",uri="sip:104@192.168.1.92",response="ed2de012b2255e85ddb0ee724b9a3ffd"
 Session-Expires: 1800
 Min-SE: 90
 Content-Type: application/sdp
ACK-sip:104@192.168.1.92SIP/2.0
从:“110”;标签=80859256
致:;标签=as25af7f49
电话号码:80859256
CSeq:80859256确认
Via:SIP/2.0/UDP 192.168.1.92:6000;rport;分支=z9hG4bK-80859256
联系人:
内容长度:0
邀请sip:104@192.168.1.92SIP/2.0
从:“110”;标签=80859256
致:
电话号码:80859256
CSeq:80859257邀请
Via:SIP/2.0/UDP 192.168.1.92:6000;rport;分支机构=z9hG4bK-80859257
最大前锋数:5
允许:注册、邀请、确认、再见、推荐、通知、取消、信息、选项、恶作剧、订阅
联系人:
授权:摘要
username=“110”,realm=“asterisk”,nonce=“20e95772”,uri=“sip:104@192.168.1.92,response=“ed2de012b2255e85ddb0ee724b9a3ffd”
会期届满:1800
Min SE:90
内容类型:应用程序/sdp
我还没有包括上面的邀请发送的实际SDP。扩展110的密码为110,如sip.conf中所定义

问题: 我得到这个错误:

 WARNING...: chan_sip.c:16702 check_auth: username mismatch, have <110>, digest has <>
 NOTICE...: chan_sip.c:25603 handle_request_invite: Failed to authenticate device "110"<sip:110@192.168.1.92>;tag=76981187
警告…:chan\u sip.c:16702检查\u auth:username不匹配,have,digest has
注意…:chan_sip.c:25603 handle_request_invite:无法验证设备“110”;标签=76981187
随后是一条“SIP/2.0 403禁止”消息

我不认为我在第二次邀请中发送的摘要计算是错误的

需要改变什么?我花了很多时间调试这个。。。
非常感谢您的帮助。

响应中的用户名被星号解析为空,因为授权标题字段在“摘要”和“用户名”之间的CR+LF之后结束。为了使标题字段在新行上继续,该行需要以空格开头;发件人:


删除CR+LF或在新行开头插入空格都可以解决问题。

在“Authorization:Digest”和“username=…”之间的实际响应中是否有CR+LF,或者这只是添加到控制台的调试输出中?如果是这样,您需要以空格开始新行,否则它将不会被视为授权标头字段的延续,即授权字段将不包含username@snowcloned谢谢。就这样。直到你指出,我才意识到我在“Digest”之后插入了CR+LF。我只是觉得这是一个环绕在控制台上的显示。改变了这一点,它的工作。你能提供这个答案吗?我很乐意接受,因为这确实是一个答案,而不仅仅是一个评论。
 WARNING...: chan_sip.c:16702 check_auth: username mismatch, have <110>, digest has <>
 NOTICE...: chan_sip.c:25603 handle_request_invite: Failed to authenticate device "110"<sip:110@192.168.1.92>;tag=76981187
Header fields can be extended over multiple lines by preceding each extra line with at least
one SP or horizontal tab (HT).  The line break and the whitespace at the beginning of the
next line are treated as a single SP character.