Skip to content

Commit 2601b0d

Browse files
committed
extend/expand the result of authorization amqp query
* trusted methods do not need to check for a password * renames AUTHORIZATION_SET_AUTH TO AUTHORIZATIO_SETUP_AUTH for better code visibility/understanding
1 parent 58154e7 commit 2601b0d

File tree

2 files changed

+35
-30
lines changed

2 files changed

+35
-30
lines changed

kamailio/authorization.cfg

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,19 @@ route[AUTHORIZATION_CHECK]
7575
{
7676
route(KZ_AUTHORIZATION_SETUP);
7777
routes(AUTHORIZATION_CHECK);
78-
79-
if (isflagset(FLAG_REGISTERED_ENDPOINT)) {
80-
route(AUTHORIZATION_SET_AUTHZ);
78+
if(isflagset(FLAG_REGISTERED_ENDPOINT)) {
79+
route(AUTHORIZATION_SETUP_AUTHZ);
8180
}
8281
}
8382

83+
84+
route[AUTHORIZATION_SETUP_AUTHZ]
85+
{
86+
$xavp(authz=>token) = $xavp(ulattrs=>token);
87+
$xavp(authz[0]=>endpoint_id) = $(xavp(ulattrs=>token){re.subst,/(.*)@(.*)/\1/});
88+
$xavp(authz[0]=>account_id) = $(xavp(ulattrs=>token){re.subst,/(.*)@(.*)/\2/});
89+
}
90+
8491
route[AUTHORIZATION_CHECK_TRUSTED]
8592
{
8693
if (isflagset(FLAG_AUTHORIZED)) return;
@@ -92,13 +99,6 @@ route[AUTHORIZATION_CHECK_TRUSTED]
9299
}
93100
}
94101

95-
route[AUTHORIZATION_SET_AUTHZ]
96-
{
97-
$xavp(authz=>token) = $xavp(ulattrs=>token);
98-
$xavp(authz[0]=>endpoint_id) = $(xavp(ulattrs=>token){re.subst,/(.*)@(.*)/\1/});
99-
$xavp(authz[0]=>account_id) = $(xavp(ulattrs=>token){re.subst,/(.*)@(.*)/\2/});
100-
}
101-
102102
route[HANDLE_AUTHORIZATION_KAZOO]
103103
{
104104
$var(amqp_payload_request) = $_s({"Event-Category" : "directory" , "Event-Name" : "authn_req", "Method" : "$avp(auth-method)", "Auth-Nonce" : "$adn", "Auth-Realm" : "$avp(auth-domain)", "Auth-User" : "$avp(auth-user)", "From" : "$fu", "To" : "$tu", "Orig-IP" : "$si", "Orig-Port" : "$sp", "User-Agent" : "$avp(auth-ua)", "Contact" : "$avp(auth-contact)", "Call-ID" : "$ci" });
@@ -152,25 +152,9 @@ onreply_route[KZ_AUTHORIZATION_CHECK_REPLY]
152152

153153
route[KZ_AUTHORIZATION_CHECK_RESPONSE]
154154
{
155-
$var(retcode) = pv_auth_check("$avp(auth-domain)", "$vn(password)", "0", "0");
156-
if ($var(retcode) != 1) {
157-
xlog("L_WARNING", "end - auth failed $var(retcode)\n");
158-
routes(KZ_AUTHORIZATION_FAILED_AUTH);
159-
switch($var(retcode)) {
160-
case -4:
161-
case -5:
162-
case -6:
163-
xlog("L_INFO", "end - auth check failed due to nonce or missing creds, challenging\n");
164-
auth_challenge("$avp(auth-domain)", "1");
165-
exit;
166-
break;
167-
default:
168-
send_reply("403", "Forbidden");
169-
exit;
170-
}
171-
}
155+
route_if_exists($_s(KZ_AUTHORIZATION_CHECK_RESPONSE_$(kzR{kz.json,Auth-Method}{s.toupper})));
172156

173-
xlog("L_INFO", "$(rm{s.tolower}) was authorized by kazoo via amqp\n");
157+
xlog("L_INFO", "$(rm{s.tolower}) was authorized with $(kzR{kz.json,Auth-Method}) by kazoo via amqp\n");
174158
setflag(FLAG_REQUEST_AUTHORIZED_BY_KAZOO);
175159

176160
consume_credentials();
@@ -183,7 +167,6 @@ route[KZ_AUTHORIZATION_CHECK_RESPONSE]
183167
$xavp(hf[0]=>X-AUTH-Token) = $xavp(authz=>token);
184168

185169
setflag(FLAG_AUTHORIZED);
186-
# treat req as if it was from a reg'd endpoint despite absent location record
187170
setflag(FLAG_REGISTERED_ENDPOINT);
188171

189172
# flag that contact alias needs to be added for subscribe
@@ -200,6 +183,28 @@ route[KZ_AUTHORIZATION_CHECK_RESPONSE]
200183
exit;
201184
}
202185

186+
route[KZ_AUTHORIZATION_CHECK_RESPONSE_PASSWORD]
187+
{
188+
$var(retcode) = pv_auth_check("$avp(auth-domain)", "$vn(password)", "0", "0");
189+
if ($var(retcode) != 1) {
190+
xlog("L_WARNING", "end - auth failed $var(retcode)\n");
191+
routes(KZ_AUTHORIZATION_FAILED_AUTH);
192+
switch($var(retcode)) {
193+
case -4:
194+
case -5:
195+
case -6:
196+
xlog("L_INFO", "end - auth check failed due to nonce or missing creds, challenging\n");
197+
auth_challenge("$avp(auth-domain)", "1");
198+
exit;
199+
break;
200+
default:
201+
send_reply("403", "Forbidden");
202+
exit;
203+
}
204+
}
205+
206+
}
207+
203208
route[HANDLE_AUTHORIZATION]
204209
{
205210

kamailio/registrar-role.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ route[SAVE_LOCATION]
425425
$var(AdvIP) = "[" + $RAi + "]";
426426
}
427427

428-
route(AUTHORIZATION_SET_AUTHZ);
428+
route(AUTHORIZATION_SETUP_AUTHZ);
429429
route(PUBLISH_REGISTRATION);
430430
routes(ON_REGISTRATION);
431431

0 commit comments

Comments
 (0)