私は基本的なSIP UAを構築しています。私はアスタリスクのコンソールに見られるように、以下は、INVITEを送信しています(認証のみに関連するヘッダが表示されます):SIP INVITEのアスタリスクダイジェスト認証で「user mismatch」エラーが発生する
INVITE sip:[email protected] SIP/2.0
From: "110"<sip:[email protected]>;tag=80859256
To: <sip:[email protected]>
Call-ID: 80859256
CSeq: 80859256 INVITE
Via: SIP/2.0/UDP 192.168.1.92:6000;branch=z9hG4bK-80859256
Contact: <sip:[email protected]>
応答では、私は次のような課題を取得:
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:[email protected]>;tag=80859256
To: <sip:[email protected]>;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
は、私は次のように返答し:
ACK sip:[email protected] SIP/2.0
From: "110"<sip:[email protected]>;tag=80859256
To: <sip:[email protected]>;tag=as25af7f49
Call-ID: 80859256
CSeq: 80859256 ACK
Via: SIP/2.0/UDP 192.168.1.92:6000;rport;branch=z9hG4bK-80859256
Contact: <sip:[email protected]>
Content-Length: 0
INVITE sip:[email protected] SIP/2.0
From: "110"<sip:[email protected]>;tag=80859256
To: <sip:[email protected]>
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:[email protected]>
Authorization: Digest
username="110",realm="asterisk", nonce="20e95772",uri="sip:[email protected]",response="ed2de012b2255e85ddb0ee724b9a3ffd"
Session-Expires: 1800
Min-SE: 90
Content-Type: application/sdp
招待状と一緒に送信された実際のSDPには含まれていません。拡張子110のパスワードは、sip.confで定義されている110です。
QUESTION: 私はこのエラーを取得しています:
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:[email protected]>;tag=76981187
これは、 "SIP/2.0 403禁止" のメッセージが続いています。
2番目のINVITEで送信されたダイジェスト計算が間違っているとは思いません。
何を変更する必要がありますか?私はこれをデバッグするのに多くの時間を費やしてきました... どんな助けも高く評価されるでしょう。
"Authorization:Digest"と "username = ..."の間に実際のレスポンスにCR + LFがあるのですか?これはコンソールのデバッグ出力に追加されただけですか?その場合、新しい行を空白で開始する必要があります。そうしないと、Authorizationヘッダーフィールドの続きと見なされません。つまり、Authorizationフィールドにはユーザー名が含まれません。 – snowcloned
@snowclonedありがとうございます。それはそれだった。あなたが指摘するまで、「ダイジェスト」の後にCR + LFを挿入していたことはわかりませんでした。私はちょうどそれがコンソールのラップアラウンドディスプレイだと思った。それを変更し、それが動作します。あなたはこれを答えとして提供できますか?それは本当に答えだけではないので、私はそれを受け入れることが非常に喜ばしくなります。 – Sam