[reSIProcate] how to include "authorization" field in the first "INVITE" sip message

Scott Godin sgodin at sipspectrum.com
Wed Oct 2 16:52:39 CDT 2013


Hi Allen,

You should be careful about credential caching.  The following rules are in
RFC3261 section 22.3:

   The following rule is RECOMMENDED for proxy credential caching:

   If a UA receives a Proxy-Authenticate header field value in a 401/407
   response to a request with a particular Call-ID, it should
   incorporate credentials for that realm in all subsequent requests
   that contain the same Call-ID.  These credentials MUST NOT be cached
   across dialogs; however, if a UA is configured with the realm of its
   local outbound proxy, when one exists, then the UA MAY cache
   credentials for that realm across dialogs.  Note that this does mean
   a future request in a dialog could contain credentials that are not
   needed by any proxy along the Route header path.

DUM will only cache credentials within the same dialog.  I see you are
trying to use the setImsAuthUser profile setting - are you really
operating in an IMS environment?  I'm not really familiar with how
auth works in IMS to help much with it.

Assuming no IMS - You could try capturing the authorization headers
from your last outbound registration (using an outbound decorator -
https://www.resiprocate.org/Modifying/Decorating_messages_sent) and
placing them in the INVITE after calling makeInviteSession, but make
sure you are not violating the RFC statement above.

Scott



On Wed, Oct 2, 2013 at 5:31 PM, Allen Guan <allenguan at gmail.com> wrote:

> Hi, all,
>
> I have a question: I want to include "Authorization" in the first "INVITE"
> sip message, my code is as follows:
> ---------
> std::string sDialOutUser = DIALOUT_FROM_NUMBER;
>
> NameAddr dialoutAor;
> dialoutAor.uri().host() = g_uConferenceConfigure.m_
> sExternalIp;
> dialoutAor.uri().port() = g_uConferenceConfigure.m_iSIPPort;
> dialoutAor.uri().user() = sDialOutUser.c_str();
> Data dialoutpasswd("111");
>
> oDialogUsageManager->getMasterProfile()->setDefaultFrom(dialoutAor);
> oDialogUsageManager->getMasterProfile()->setDigestCredential(dialoutAor.uri().host(),
> dialoutAor.uri().user(), dialoutpasswd);
> oDialogUsageManager->getMasterProfile()->setImsAuthUser(sDialOutUser.c_str(),
> oInviteMsgAddr.uri().getAorNoPort());
>
> SharedPtr<SipMessage> inviteMessageUac =
> oDialogUsageManager->makeInviteSession(oInviteMsgAddr, &oLocalSdp);
> --------
>
> the generated sip message's "Authorization" has empty "nonce" and
> "response", I guess at least "response" should not be empty to include the
> digest credential information, right? Would you please kindly tell me
> what's the correct way to do it?
>
> Thanks a lot!
>
> -Allen
>
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel at resiprocate.org
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20131002/acbc7146/attachment.htm>


More information about the resiprocate-devel mailing list