do this in failure_route
if (is_method("INVITE"))
{
# mark that auth was performed
setflag(8);
# trigger again the failure route
t_on_failure("missed_call_registrations");
if ($(<reply>hdr(Proxy-Authenticate)))
{
$var(raw_auth) = $(<reply>hdr(Proxy-Authenticate));
}
if ($(<reply>hdr(WWW-Authenticate)))
{
$var(raw_auth) = $(<reply>hdr(WWW-Authenticate));
}
$var(reg_start) = "/(.*?)realm=\"//g";
$var(reg_end) = "/\"(.*)//g";
xlog("callid=$ci: Failure_route[missed_call_registrations]: Raw
data $var(raw_auth)");
$var(raw_auth) = $(var(raw_auth){re.subst,$var(reg_start)});
$var(raw_auth) = $(var(raw_auth){re.subst,$var(reg_end)});
xlog("callid=$ci: Failure_route[missed_call_registrations]: Got
realm data $var(raw_auth)");
$avp(uac_realm)=$var(raw_auth);
# repeat the request with auth response this time
xlog("callid=$ci: Failure_route[missed_call_registrations]:let
us send authentication");
xlog("callid=$ci:
Failure_route[missed_call_registrations]:FAILUREROUTE_STATUS40X_UACAUTHINVITE_DEBUG_VARIABLES:
AVP_UAC_REALM:$avp(uac_realm) AVP_UAC_USERNAME: $avp(uac_username)
AVP_UAC_PASSWORD:$avp(uac_password)");
uac_auth();
}
On 25/09/2020 05:13, Jeff Pyle wrote:
Good catch on Proxy-Authorization vs Proxy-Authenticate. I think I've
been looking at this too long. I checked the module and that's
exactly what it is.
My hope was to load the uac_auth user/pass AVPs ahead of time from a
DB based on where I knew I was sending the call, load the realm one in
the failure route based on what comes back in the header, and then
fire the uac_auth() function. It looks like I may have to manually
extract the realm from whichever header comes in. Not ideal, but
probably workable.
- Jeff
On Thu, Sep 24, 2020 at 9:58 PM Ben Newlin <[email protected]
<mailto:[email protected]>> wrote:
This does not appear to be documented, but I believe uac_auth()
looks through the AVPs configured in the UAC_AUTH module and uses
the first one whose realm matches the challenge realm. So in order
to authenticate any challenge, you must load all of the possible
credentials into those AVPs.
Ben Newlin
*From: *Users <[email protected]
<mailto:[email protected]>>
*Date: *Thursday, September 24, 2020 at 9:53 PM
*To: *OpenSIPS users mailling list <[email protected]
<mailto:[email protected]>>
*Subject: *Re: [OpenSIPS-Users] learning the realm from
authentication challenges
According to the docs, $ar provides the realm from the
“Authorization” or “Proxy-Authorization” headers. Not from the
”Proxy-Authenticate” header, which is what you have.
https://www.opensips.org/Documentation/Script-CoreVar-3-1#toc6
Ben Newlin
*From: *Users <[email protected]
<mailto:[email protected]>>
*Date: *Thursday, September 24, 2020 at 9:31 PM
*To: *OpenSIPS users mailling list <[email protected]
<mailto:[email protected]>>
*Subject: *[OpenSIPS-Users] learning the realm from authentication
challenges
I'm trying to recover the realm of an auth challenge to OpenSIPS
so I can respond to it with the uac_auth() function, and that
requires knowing the realm. The docs say that $ar
<https://www.opensips.org/Documentation/Script-CoreVar-3-1#toc6>
should provide that, perhaps written like $(<reply>ar) to get it
in the right context. I'm having some trouble getting the data.
failure_route[relay_failure] {
...
if (t_check_status("407")) {
xlog("L_NOTICE", "[1] Proxy-Authenticate:
$(<reply>hdr(Proxy-Authenticate))\n");
xlog("L_NOTICE", "[2] Auth Realm: $(<reply>ar)\n");
xlog("L_NOTICE", "[3] Auth Realm: $ar\n");
}
...
}
The logs show:
/usr/sbin/opensips[33044]: [1] Proxy-Authenticate: Digest
realm="asterisk",
nonce="5f6d42140000936ad820dbcd452e6bcd145777e458dd46dd", qop="auth"
/usr/sbin/opensips[33044]: [2] Auth Realm reply: <null>
/usr/sbin/opensips[33044]: [3] Auth Realm: <null>
Is it possible to get the realm? Is it possible to build a
response with uac_auth() for an arbitrary authentication challenge?
This is on 3.1.0~20200923~88f89e941.
- Jeff
_______________________________________________
Users mailing list
[email protected] <mailto:[email protected]>
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users