<div dir="ltr">It&#39;s 1.10 pulled from git a few hours ago.  Debian 7 64-bit.<div><br></div><div>The AVPs are set prior to calling the b2b scenario:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<div>modparam(&quot;uac_auth&quot;,&quot;auth_realm_avp&quot;,   &quot;$avp(auth_realm)&quot;)</div><div><div>modparam(&quot;uac_auth&quot;,&quot;auth_username_avp&quot;,&quot;$avp(auth_user)&quot;)</div></div><div><div>modparam(&quot;uac_auth&quot;,&quot;auth_password_avp&quot;,&quot;$avp(auth_pass)&quot;)</div>
</div><div>#modparam(&quot;uac_auth&quot;,&quot;credential&quot;,&quot;UserName:AuthRealm123:SuperS33cret&quot;)<br></div><div><br></div><div>route {</div><div>  ...</div><div><div>        $avp(auth_user)  := &quot;UserName&quot;;</div>
</div><div><div>        $avp(auth_pass)  := &quot;SuperS33cret&quot;;</div></div><div><div>        $avp(auth_realm) := &quot;AuthRealm123&quot;;</div></div><div><br></div><div>        b2b_init_request(&quot;top hiding/t105&quot;);</div>
<div>...</div><div>}</div></blockquote><div><br></div><div>debugs:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>Nov 18 18:07:55 [26004] DBG:b2b_entities:b2b_tm_cback: Received reply [407] for dialog [0x7ff941c13268], method [INVITE]</div>
</div><div><div>Nov 18 18:07:55 [26004] DBG:tm:t_unref_cell: UNREF_UNSAFE: [0x7ff941c18448] after is 1</div></div><div><div>Nov 18 18:07:55 [26004] DBG:b2b_entities:b2b_tm_cback: dlg=[0x7ff941c13268], uac_tran=NULL</div></div>
<div><div>Nov 18 18:07:55 [26004] DBG:core:parse_authenticate_body: &lt;realm&gt;=&quot;AuthRealm123&quot; state=2</div></div><div><div>Nov 18 18:07:55 [26004] DBG:core:parse_authenticate_body: &lt;nonce&gt;=&quot;528a9de900013e5f13fe985df4a9848356a1f937207ecfe4&quot; state=3</div>
</div><div><div>Nov 18 18:07:55 [26004] DBG:core:parse_authenticate_body: &lt;qop&gt;=&quot;auth&quot; state=1</div></div><div><div>Nov 18 18:07:55 [26004] DBG:b2b_logic:b2bl_parse_key: hash_index = [472]  - local_index= [0]</div>
</div></blockquote><div><br></div><div><br></div><div>The following (successful) debugs occur if I uncomment the credential modparam visible above:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<div><div>Nov 18 18:15:45 [26118] DBG:b2b_entities:b2b_tm_cback: dlg=[0x7f8a06744c30], uac_tran=NULL</div></div><div><div>Nov 18 18:15:45 [26118] DBG:core:parse_authenticate_body: &lt;realm&gt;=&quot;66.94.76.24&quot; state=2</div>
</div><div><div>Nov 18 18:15:45 [26118] DBG:core:parse_authenticate_body: &lt;nonce&gt;=&quot;528a9fbf00014297ef8f2335679f0310537c85fe2b007186&quot; state=3</div></div><div><div>Nov 18 18:15:45 [26118] DBG:core:parse_authenticate_body: &lt;qop&gt;=&quot;auth&quot; state=1</div>
</div><div><div>Nov 18 18:15:45 [26118] DBG:uac_auth:build_authorization_hdr: auth_hdr is &lt;Proxy-Authorization: Digest username=&quot;UserName&quot;, realm=&quot;AuthRealm123&quot;, nonce=&quot;528a9fbf00014297ef8f2335679f0310537c85fe2b007186&quot;, uri=&quot;sip:2165551212@domain&quot;, qop=auth, nc=00000001, cnonce=&quot;3105687311&quot;, response=&quot;ef047011046690b6eea99c7848de499a&quot;, algorithm=MD5</div>
</div><div><div>&gt;</div></div><div><div>Nov 18 18:15:45 [26118] DBG:b2b_entities:b2b_tm_cback: [Proxy-Authorization: Digest ...]</div></div><div><div>Nov 18 18:15:45 [26118] DBG:b2b_entities:b2b_tm_cback: uri [...]</div>
</div></blockquote><div class="gmail_extra"><br clear="all"><div><div dir="ltr"><div><br></div><div>I tried to follow the source to isolate the failing mechanism.  I arrived at modules/uac_auth/auth.c.  In get_avp_credential() at line 199:</div>
<div><br></div><div><div>        avp = search_first_avp( realm_avp_type, realm_avp_name, &amp;val, 0);</div><div>        if ( avp==NULL || (avp-&gt;flags&amp;AVP_VAL_STR)==0 || val.s.len&lt;=0 )</div><div>                return 0;</div>
</div><div><br></div><div>In my case I&#39;ve discovered avp==NULL so the if-statement returns 0.  avp==NULL because in the search_first_avp() at line 346 of usr_avp.c:</div><div><br></div><div><div>                if (*crt_avps==0)</div>
<div>                        return 0;</div></div><div><br></div><div>And it&#39;s game over.  I can&#39;t discern what causes this.  I&#39;m already way in over my pay grade.  :)</div><div>

<br></div></div></div>
<div class="gmail_extra"><br></div>- Jeff</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Nov 18, 2013 at 6:02 PM, Ovidiu Sas <span dir="ltr">&lt;<a href="mailto:osas@voipembedded.com" target="_blank">osas@voipembedded.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Can you post the debug logs and let us know which version of opensips<br>

are you running?<br>
Also, make sure that you set the credentials in AVPs before invoking<br>
the b2b call.<br>
<br>
Thanks,<br>
Ovidiu<br>
<div class=""><div class="h5"><br>
On Mon, Nov 18, 2013 at 5:11 PM, Jeff Pyle &lt;<a href="mailto:jpyle@fidelityvoice.com">jpyle@fidelityvoice.com</a>&gt; wrote:<br>
&gt; This functionality has become key for my configuration.  I&#39;ve done some<br>
&gt; digging today.  Here&#39;s what I know.<br>
&gt;<br>
&gt; b2b_entities&#39; auth call gets to around line 347 of usr_avp.c and fails:<br>
&gt;<br>
&gt;                 if (*crt_avps==0)<br>
&gt;                         return 0;<br>
&gt;<br>
&gt; Programming is not my strength.  Any thoughts what might cause this<br>
&gt; condition, or how it might be related b2b_entities&#39; ability to process an<br>
&gt; auth request?<br>
&gt;<br>
&gt;<br>
&gt; - Jeff<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Nov 13, 2013 at 6:03 PM, Jeff Pyle &lt;<a href="mailto:jpyle@fidelityvoice.com">jpyle@fidelityvoice.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Ovidiu,<br>
&gt;&gt;<br>
&gt;&gt; It does not.  At least not for me.  Here are some snippets of my config<br>
&gt;&gt; file:<br>
&gt;&gt;<br>
&gt;&gt; modparam(&quot;uac_auth&quot;,&quot;auth_realm_avp&quot;,  &quot;$avp(auth_realm)&quot;)<br>
&gt;&gt; modparam(&quot;uac_auth&quot;,&quot;auth_username_avp&quot;,&quot;$avp(auth_user)&quot;)<br>
&gt;&gt; modparam(&quot;uac_auth&quot;,&quot;auth_password_avp&quot;,&quot;$avp(auth_pass)&quot;)<br>
&gt;&gt;<br>
&gt;&gt; #modparam(&quot;uac_auth&quot;,&quot;credential&quot;,&quot;valid-username:appropriate-realm:valid-password&quot;)<br>
&gt;&gt;<br>
&gt;&gt; route {<br>
&gt;&gt;<br>
&gt;&gt;   ... sanity checks, etc ...<br>
&gt;&gt;<br>
&gt;&gt;         $avp(auth_realm) := &quot;appropriate-realm&quot;;<br>
&gt;&gt;         $avp(auth_user)  := &quot;valid-username&quot;;<br>
&gt;&gt;         $avp(auth_pass)  := &quot;valid-password&quot;;<br>
&gt;&gt;<br>
&gt;&gt;         if !(b2b_init_request(&quot;top hiding/t105&quot;)) {<br>
&gt;&gt;                 xlog(&quot;L_ERR&quot;, &quot;** b2b_init  failed - - S=$si:$sp T=$tU<br>
&gt;&gt; F=$fU C=$ci\n&quot;);<br>
&gt;&gt;                 send_reply(&quot;500&quot;, &quot;Internal Server Error&quot;);<br>
&gt;&gt;         }<br>
&gt;&gt;         exit;<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Configured like this, the 407 gets passed back to the client.  If I<br>
&gt;&gt; uncomment the &#39;credential&#39; modparam, the B2B will send an INVITE with the<br>
&gt;&gt; correct auth.<br>
&gt;&gt;<br>
&gt;&gt; The same uac_auth config with the same AVPs work correctly if I use<br>
&gt;&gt; uac_auth() on a failure_route in a pure proxy config.  That&#39;s why I&#39;m<br>
&gt;&gt; confused about it not working with the B2B.  I looked through the source and<br>
&gt;&gt; as best I can tell the same functions are called the same way for each.<br>
&gt;&gt;<br>
&gt;&gt; Ok, let me be specific on that last point.  The client to this B2B<br>
&gt;&gt; instance is another Opensips instance with proxy-only commands, most notably<br>
&gt;&gt; rtpproxy.  That&#39;s where I have uac_auth() working today.  With that I call<br>
&gt;&gt; the scenario here as &quot;top hiding/at105&quot; (note the &quot;a&quot;) to intentionally pass<br>
&gt;&gt; the 407 back to the proxy config.  It works.  Ideally, I&#39;d prefer the B2B<br>
&gt;&gt; scenario here field the 407.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; - Jeff<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Nov 13, 2013 at 4:34 PM, Ovidiu Sas &lt;<a href="mailto:osas@voipembedded.com">osas@voipembedded.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If you set the AVPs before creating the b2b call, it should work on 1.10.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Regards,<br>
&gt;&gt;&gt; Ovidiu Sas<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Tue, Nov 12, 2013 at 11:16 PM, Jeff Pyle &lt;<a href="mailto:jpyle@fidelityvoice.com">jpyle@fidelityvoice.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt; I was about to let this one go when I found &quot;B2B module gets visibility<br>
&gt;&gt;&gt; &gt; to<br>
&gt;&gt;&gt; &gt; credentials defined via AVPs&quot; on the About Version 1.10 page.  In my<br>
&gt;&gt;&gt; &gt; case it<br>
&gt;&gt;&gt; &gt; works only if I define the &#39;credential&#39; modparam for uac_auth.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; The AVPs do work if I use the uac_auth() function in a failure_route<br>
&gt;&gt;&gt; &gt; instead<br>
&gt;&gt;&gt; &gt; of the B2BUA top hiding.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Is there a trick I&#39;m missing?<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; - Jeff<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; On Mon, Nov 11, 2013 at 11:09 AM, Jeff Pyle &lt;<a href="mailto:jpyle@fidelityvoice.com">jpyle@fidelityvoice.com</a>&gt;<br>
&gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Hello,<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; I have uac_auth() working with AVPs in a proxy configuration on v1.10.<br>
&gt;&gt;&gt; &gt;&gt; This is important because I need to choose the authentication username<br>
&gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt;&gt; &gt;&gt; password based on the usr_preferences of the source IP of the call.<br>
&gt;&gt;&gt; &gt;&gt; Is it<br>
&gt;&gt;&gt; &gt;&gt; possible choose the credentials at call-time (like the AVPs allow) in<br>
&gt;&gt;&gt; &gt;&gt; a B2B<br>
&gt;&gt;&gt; &gt;&gt; top-hiding scenario?<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; The scenario authenticates properly if I statically specify a<br>
&gt;&gt;&gt; &gt;&gt; &quot;credentials&quot; modparam for uac_auth.  It does not work, however, if I<br>
&gt;&gt;&gt; &gt;&gt; set<br>
&gt;&gt;&gt; &gt;&gt; AVPs prior to calling b2b_init_request(&quot;top hiding&quot;).  Is there<br>
&gt;&gt;&gt; &gt;&gt; another way<br>
&gt;&gt;&gt; &gt;&gt; to approach this?<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Regards,<br>
&gt;&gt;&gt; &gt;&gt; Jeff<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt;&gt; &gt; Users mailing list<br>
&gt;&gt;&gt; &gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
&gt;&gt;&gt; &gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; VoIP Embedded, Inc.<br>
&gt;&gt;&gt; <a href="http://www.voipembedded.com" target="_blank">http://www.voipembedded.com</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Users mailing list<br>
&gt;&gt;&gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
&gt;&gt;&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Users mailing list<br>
&gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;<br>
<br>
<br>
<br>
--<br>
VoIP Embedded, Inc.<br>
<a href="http://www.voipembedded.com" target="_blank">http://www.voipembedded.com</a><br>
<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</div></div></blockquote></div><br></div></div>