You have a proxy authorize block in your INVITE block, which will require the
client to send auth credentials. If it doesn't, it gets that error (which
usually is a signal to the client to then go ahead and send the credentials).
On Thu, 25 May 2006 19:43:46 +0100, Edgar Barbosa wrote
Hi all,
I'm trying to deploy a scenario where I have an openser as a sip proxy
(taking care of registrations) in front of an asterisk (to handle
pstn call routing/billing/etc).
Both openser and asterisk authenticate users on the same database,
and I'm able to register a UA on both.
The problem is when I try to relay calls from openser to asterisk. I
always get the following error: SIP/2.0 407 Proxy Authentication Required
What am I missing here?
My openser.cfg is the following:
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
#log_stderror=no # (cmd line: -E)
# Uncomment these lines to enter debugging mode
#fork=no
log_stderror=yes
listen=192.168.64.102
sip_warning=no
#advertised_address=192.168.1.102
reply_to_via=no
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/openser/modules/mysql.so"
loadmodule "/usr/lib/openser/modules/sl.so"
loadmodule "/usr/lib/openser/modules/tm.so"
loadmodule "/usr/lib/openser/modules/rr.so"
loadmodule "/usr/lib/openser/modules/maxfwd.so"
loadmodule "/usr/lib/openser/modules/usrloc.so"
loadmodule "/usr/lib/openser/modules/registrar.so"
loadmodule "/usr/lib/openser/modules/nathelper.so"
loadmodule "/usr/lib/openser/modules/textops.so"
loadmodule "/usr/lib/openser/modules/xlog.so"
loadmodule "/usr/lib/openser/modules/auth.so"
loadmodule "/usr/lib/openser/modules/auth_db.so"
# -- usrloc params --
# Flush every 60 sec
modparam("usrloc", "db_mode", 0)
# -- auth params --
modparam("auth_db", "db_url", "XXX")
modparam("auth_db", "user_column", "accountcode")
#modparam("auth_db", "domain_column", "accountcode")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "secret")
# -- replication auth param --
modparam("auth", "secret", "mysecret")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
return;
};
if ( msg:len > max_len ) {
sl_send_reply("513", "Message too big");
return;
};
force_rport();
fix_nated_contact();
if(uri == myself)
{
if(method == "REGISTER")
{
# Make sure they are a valid user on our
proxy if(!www_authorize("", "astaccount"))
{ xlog("L_INFO",
"Req Auth For %ct, URI = %ru\n");
www_challenge("", "1"); return;
};
xlog("L_INFO", "Registered Contact %ct, URI
= %ru\n"); save("location");
return;
};
};
record_route();
# -----------------------------------------------------------
-------
# loose-route processing
if(loose_route())
{
xlog("L_INFO", "loose_route(): Looking up %rm URI
%ru from %is\n"); lookup("location");
xlog("L_INFO", "loose_route(): t_relay() %rm to URI %ru\n");
t_relay(); return; };
if(method == "INVITE")
{
# Assume it came from one of our VoIP phones, all
routing is done by Asterisk xlog("L_INFO",
"%rm came from a VoIP phone (%is), attempting to authorize %fu\n");
# Make sure they are a valid user on our
proxy if (!www_authorize("", "astaccount"))
{
www_challenge("", "0");
xlog("L_INFO", "Failed to authorize %fu
(%is)\n"); return;
};
# Found a match, this is going to a VoIP
phone xlog("L_INFO", "Auth OK, sending URI
%ru to Asterisk for routing\n");
rewritehostport("192.168.64.103:5060");
xlog("L_INFO", "INVITE New URI = %ru, t_relay()ing
now\n"); t_relay(); # forward(uri:host,
uri:port); return; };
# -----------------------------------------------------------
-------
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
lookup("location");
xlog("L_INFO", "Default t_relay() (method = %rm, URI = %ru,
From = %is)\n"); if(!t_relay())
{
xlog("L_INFO", "Failed sending requesting %rm URI
(%ru)\n");
sl_reply_error(); }; }
Thanks for your help
_______________________________________________
Serusers mailing list
Serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers