[Asterisk-Users] RPID Issue

Olle E Johansson oej at edvina.net
Sat Dec 31 02:05:19 MST 2005


Ray Van Dolson wrote:
> Posted this to -dev, but it may be more appropriate here as I haven't
> released my "patches" for it...
> 
> I've run into a couple issues relating to RPID.
> 
> I have an Asterisk 1.2.1 installation doing SIP for SPA-2002 and PAP2-NA
> ATA's.  From the Asterisk box, we then do SIP to a VoIP provider who handles
> the SIP to PSTN translation for us.  Pretty straight forward.
> 
> I decided to try using the RPID features in 1.2.1.  Enabled all the
> trustrpid directives and sendrpid as well.  However, when I dial *81
> <number> on my Sipura (*81 makes the call private) I get a fast busy back
> from Asterisk.
> 
> Upon further investigation, it appears that Asterisk is saying the Sipura is
> unauthorized.  This only happens when I try and block caller ID from the
> Sipura though.
> 
> Dug around in the source a bit and it seems that Asterisk uses the contents
> of the From header to authenticate the ATA against.  Normally (when making a
> non-CLID blocked call), the Sipura sends a from header like the following:
> 
> From: ROY <sip:5305715503.pw.digitalpath.net at sipproxy>;tag=cec0ff0080328e51o0
> 
> Authentication works fine in this case.
> 
> However, when the caller dials *81, the from header looks like this:
> 
> From: Anonymous <sip:anonymous at localhost>;tag=db61581ae353a8e1o0
> 
> I believe this is why authentication is failing.
> 
> Now, is this incorrect behavior by my ATA?  Seems like it should populate
> the From header no matter what.  On the other hand, I see that the
> 5305715503.pw.digitalpath.net username is available in two other places in
> the initial INVITE:
> 
>   * The Contact header:
>     Contact: Anonymous <sip:5305715503.pw.digitalpath.net at 172.25.163.2:5060
>   * The RPID header:
>     Remote-Party-ID: ROY <sip:5305715503.pw.digitalpath.net at sipproxy>;screen=yes;privacy=full;party=calling
> 
> So, what I gander is happening is that Asterisk is using the contents of the
>>From header the first time around to generate the auth challenge stuff
> (nonce, etc) which is sent back to the ATA.  The ATA then replies with the
> Proxy-Authorization field with the *correct* username (the 530571...).  This
> doesn't match up with what was in the From field (Anonymous) and thus
> authentication fails.  Correct?
> 
> Maybe Asterisk should initially use the username in the Contact field to do
> authentication on?  Or the RPID header if available?
> 
> In any case, my solution was to modify check_user_full() and if an RPID
> header is available, I copy the username out of it into the "of" variable and
> authentication succeeds and the call works fine with or without *81.
> 
> The fix works for me, but I have a feeling there's a more "correct" way to
> address this issue.  I'd like to know if my Sipura is misbehaving, or if
> Asterisk should be looking somewhere other than the From field for
> authentication info.
> 
Asterisk should look somewhere else - in the auth header - for 
authentication info. However, this is not easy to fix in the current 
version of chan_sip. I've tried coding that before (chan_sip2) but it 
required too large changes at the time.

We're currently planning a new generation of chan_sip that will have a 
different authentication scheme, not based on the from: header unless 
it's a local policy to require the From: header to be the same as the 
Digest auth user name.

So to summarize: The Sipura is doing the right thing, but Asterisk can 
not handle it today, since Asterisk requires a From: user name. You need 
to disable the caller ID in Asterisk, not in the Sipura.

/O



More information about the asterisk-users mailing list