[asterisk-users] chan_sip doesn't authenticate on INVITE from a Dial() command

Antony Stone Antony.Stone at asterisk.open.source.it
Sun Oct 25 12:43:01 CDT 2020


On Sunday 25 October 2020 at 16:27:00, Antony Stone wrote:

> Hi.
> 
> I'm trying to get Asterisk 13 to authenticate when it sends an INVITE, and
> for some reason it's simply not doing it.

I've made a bit of progress - I can now get it to authenticate, although it's 
still not dialling on to the correct number.

> I've even resorted to reading the source code to try and work out what I'm
> doing wrong...
> 
> In channels/chan_sip.c I find:
> 
>  * SIP Dial string syntax:
>  *     SIP/devicename
>  * or SIP/username at domain (SIP uri)
>  * or
> SIP/username[:password[:md5secret[:authname[:transport]]]]@host[:port] *
> or SIP/devicename/extension
>  * or SIP/devicename/extension/IPorHost
>  * or SIP/username at domain//IPorHost
>  * and there is an optional [!dnid] argument you can append to alter the
>  * To: header.
> 
> (Note: I don't think I have ever seen that optional "!dnid" argument
> documented anywhere...?)
> 
> So, the version with the username and password looks to me like what I
> want...
> 
> Dial(SIP/${SIPuser}:${SIPpass}@${SIPhost})  or else
> Dial(SIP/${SIPuser}:${SIPpass}@${SIPhost}!${SIPdial})
> 
> would seem to be what I need (I need to authenticate to SIPhost with the
> credentials SIPuser and SIPpass and I want to dial on to SIPdial).

It turns out that the username needs to be included twice (!?), as in:

Dial(SIP/${SIPuser}:${SIPpass}::${SIPuser}@${SIPhost}/${SIPdial})

It seems that both 'username' and 'authname' need to be supplied...

> If I do a packet capture on this machine to show what it's actually sending
> out to SIPhost, I see three packets:
> 
> 1 0.000000000  192.0.2.29 → 203.0.113.56 SIP/SDP 960 Request: INVITE
> sip:9411 at the.remote.ser.ver
> 
> 2 0.007364024 203.0.113.56 → 192.0.2.29  SIP 558 Status: 401 Unauthorized
> 
> 3 0.007552844  192.0.2.29 → 203.0.113.56 SIP 485 Request: ACK
> sip:9411 at the.remote.ser.ver
> 
> and that's it.

Now, at least, this is followed up by an attempt to authenticate, however it 
fails.

chan_sip.c:23875 handle_response_invite: Received response: "Forbidden" from 
'"Antony Stone" <sip:Polycom650 at 198.51.100.29>;tag=as6c2ed50a'

> So, what am I doing wrong - how can I get Asterisk to actually use the
> credentials which I've supplied in the Dial() command?

I think my question has now changed to "how can I get Asterisk to use the 
credentials and successfully authenticate, then dial on to the number I need?"

> Thanks for any help :)
> 
> 
> Antony.

-- 
"It wouldn't be a good idea to talk about him behind his back in front of 
him."

 - murble

                                                   Please reply to the list;
                                                         please *don't* CC me.



More information about the asterisk-users mailing list