[reSIProcate] Managing authentication in an B2BUA

Tomasz Nowak t_nowak at go2.pl
Wed Mar 7 08:32:18 CST 2007


Hi,

I'm using resiprocate (version 1.0.2) as a base for my B2BUA and wanted 
to implement following scenario:

UserA                  B2BUA                   UserB
  |                       |                       |
  |  1.INVITE             |                       |
  |---------------------->|  2.INVITE             |
  |                       |---------------------->|
  |                       |    3.401 Unauthorized |
  |    4.401 Unauthorized |<----------------------|
  |<----------------------|  5.ACK                |
  |  6.ACK                |---------------------->|
  |---------------------->|                       |
  |                       |                       |
  |  7.INVITE(credential) |                       |
  |---------------------->|  8.INVITE(credential) |
  |                       |---------------------->|


The idea is, that after receiving '401 Unauthorized' from UserB, B2BUA 
should challenge UserA using realm & nonce taken from the message just 
received from UserB. Later on, B2BUA can reuse the credential received 
in message (7) to reINVITE UserB.

To setup DUM to be able to respond to digest challenges from UserB, I 
have to use ClientAuthManager.

I suppose I'll need to modify ClientAuthManager::handle() method, so 
that it will issue a challenge for UserA.

I'm wondering if I need to modify also 
DialogSet::handledByAuthOrRedirect() so that it:
- doesn't send a reINVITE immediately (it has to be done after message (7)),
- return always true, so that the DialogSet (between B2BUA & UserB) 
doesn't get destroyed.

Besides, how can I know, when an INVITE with credentials comes - do I 
have to modify ServerAuthManager logic?

What are your thoughts on my idea - I'm affraid I can miss something or 
introduce some bugs especially by modifying DialogSet code.

Best Regards,
Tomasz Nowak




More information about the resiprocate-devel mailing list