How to allow nas'es to serve only groups of clients?

Alexander Solodukhin alt at softwarium.net
Thu Mar 12 12:57:16 CET 2009


Thank you for help. I try to do as you say and put this to authorize  
section after preprocess:

        preprocess

         # allow  hotspot users only
         if (SQL-Group != 'Spot') {
                 reject
         }

Here debug on this action:

++? if (SQL-Group != 'Spot')
sql_groupcmp
         expand: %{User-Name} -> spot2
sql_set_user escaped user --> 'spot2'
rlm_sql (sql): Reserving sql socket id: 4
         expand: SELECT groupname           FROM radusergroup            
WHERE username = '%{SQL-User-Name}'
    ORDER BY priority -> SELECT groupname           FROM  
radusergroup           WHERE username = 'spot2'
ORDER BY priority
sql_groupcmp finished: User is a member of group Spot
rlm_sql (sql): Released sql socket id: 4
? Evaluating (SQL-Group != 'Spot') -> TRUE
++? if (SQL-Group != 'Spot') -> TRUE
++- entering if (SQL-Group != 'Spot') {...}
+++[reject] returns reject
++- if (SQL-Group != 'Spot') returns reject

strange behaviour, user 'spot2' belongs to group 'Spot', but if clause  
return TRUE and reject returned.

Other strange thing is user 'test2' which do not a member of 'Spot' group,  
but if clause do not work for them:

++? if (SQL-Group != 'Spot')
sql_groupcmp
         expand: %{User-Name} -> test2
sql_set_user escaped user --> 'test2'
rlm_sql (sql): Reserving sql socket id: 4
         expand: SELECT groupname           FROM radusergroup            
WHERE username = '%{SQL-User-Name}'
    ORDER BY priority -> SELECT groupname           FROM  
radusergroup           WHERE username = 'test2'
ORDER BY priority
rlm_sql (sql): Released sql socket id: 4
sql_groupcmp finished: User is NOT a member of group Spot   <------ and  
not reject here
++[chap] returns noop
++[mschap] returns noop


Here spot2 and test2 groups:

mysql> select * from radusergroup where username='spot2' or  
username='test2';
+----------+-----------+----------+
| username | groupname | priority |
+----------+-----------+----------+
| spot2    | Spot      |        1 |
| test2    | VPN       |        1 |
+----------+-----------+----------+
2 rows in set (0.01 sec)



On Thu, 12 Mar 2009 12:12:15 +0200, <tnt at kalik.net> wrote:

>> I use rlm_sql to store user attributes, but i thought sql groups it's
>> internal feature of rlm_sql and not related to radius server at all.
>>
>
> It is internal, but SQL-Group can be used in other modules too. If you
> check SQL-Group in, lets say, users file, rlm_sql will be called and
> value of SQL-Group will be compared to values in radusergroup for that
> User-Name. If there is a match ...
>
> Ivan Kalik
> Kalik Informatika ISP
>
> -
> List info/subscribe/unsubscribe? See  
> http://www.freeradius.org/list/users.html



-- 
ISP CrIS, Softwarium



More information about the Freeradius-Users mailing list