Load default profile if no profile matched
Hi! I am tryiing to recreate the old behaviour I had with freeRADIUS 2: If User has correct credentials and no group the user belongs to matches, read a default group, which rejects access. We have no Fall-Through Attributes in the Database. If I configure the sql module in freeRADIUS 3.0.18 like I had with FR2: read_groups = yes read_profiles = yes default_user_profile = "DEFAULT" Do you have a suggestion for me how to change the configuration, so it behaves like the old Radius Server? The default profile is always read, even if previous groups matched: (7) sql: EXPAND %{User-Name} (7) sql: --> test_account_dsl (7) sql: SQL-User-Name set to 'test_account_dsl' rlm_sql (sql): Reserved connection (1) (7) sql: EXPAND SELECT id, UserName, Attribute, Value, op FROM radcheck WHERE username = '%{SQL-User-Name}' AND Status = 1 ORDER BY id (7) sql: --> SELECT id, UserName, Attribute, Value, op FROM radcheck WHERE username = 'test_account_dsl' AND Status = 1 ORDER BY id (7) sql: Executing select query: SELECT id, UserName, Attribute, Value, op FROM radcheck WHERE username = 'test_account_dsl' AND Status = 1 ORDER BY id (7) sql: User found in radcheck table (7) sql: Conditional check items matched, merging assignment check items (7) sql: Cleartext-Password := "test12" (7) sql: EXPAND SELECT id,UserName,Attribute,Value, op FROM radreply WHERE username = '%{SQL-User-Name}' ORDER BY id (7) sql: --> SELECT id,UserName,Attribute,Value, op FROM radreply WHERE username = 'test_account_dsl' ORDER BY id (7) sql: Executing select query: SELECT id,UserName,Attribute,Value, op FROM radreply WHERE username = 'test_account_dsl' ORDER BY id rlm_sql (sql): Reserved connection (26) rlm_sql (sql): Released connection (26) (7) sql: EXPAND SELECT GroupName FROM usergroup WHERE Username = '%{SQL-User-Name}' ORDER BY priority (7) sql: --> SELECT GroupName FROM usergroup WHERE Username = 'test_account_dsl' ORDER BY priority (7) sql: Executing select query: SELECT GroupName FROM usergroup WHERE Username = 'test_account_dsl' ORDER BY priority (7) sql: User found in the group table (7) sql: EXPAND SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE groupname = '%{sql-SQL-Group}' ORDER BY id (7) sql: --> SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE groupname = 'dsl_192_2048_filter' ORDER BY id (7) sql: Executing select query: SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE groupname = 'dsl_192_2048_filter' ORDER BY id (7) sql: Group "dsl_192_2048_filter": Conditional check items matched (7) sql: Group "dsl_192_2048_filter": Merging assignment check items (7) sql: Simultaneous-Use := 2 (7) sql: EXPAND SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE groupname = '%{sql-SQL-Group}' ORDER BY id (7) sql: --> SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE groupname = 'dsl_192_2048_filter' ORDER BY id (7) sql: Executing select query: SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE groupname = 'dsl_192_2048_filter' ORDER BY id (7) sql: Group "dsl_192_2048_filter": Merging reply items (7) sql: ERX-Egress-Policy-Name = "ds_2048_filter" (7) sql: ERX-Ingress-Policy-Name = "us_192" (7) sql: Framed-Protocol = PPP (7) sql: Service-Type = Framed-User (7) sql: Session-Timeout = 86400 (7) sql: Checking profile DEFAULT (7) sql: EXPAND DEFAULT (7) sql: --> DEFAULT (7) sql: SQL-User-Name set to 'DEFAULT' rlm_sql (sql): Reserved connection (2) rlm_sql (sql): Released connection (2) (7) sql: EXPAND SELECT GroupName FROM usergroup WHERE Username = '%{SQL-User-Name}' ORDER BY priority (7) sql: --> SELECT GroupName FROM usergroup WHERE Username = 'DEFAULT' ORDER BY priority (7) sql: Executing select query: SELECT GroupName FROM usergroup WHERE Username = 'DEFAULT' ORDER BY priority (7) sql: User found in the group table (7) sql: EXPAND SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE groupname = '%{sql-SQL-Group}' ORDER BY id (7) sql: --> SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE groupname = 'DEFAULT' ORDER BY id (7) sql: Executing select query: SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE groupname = 'DEFAULT' ORDER BY id (7) sql: Group "DEFAULT": Conditional check items matched (7) sql: Group "DEFAULT": Merging assignment check items (7) sql: Auth-Type := Reject (7) sql: EXPAND SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE groupname = '%{sql-SQL-Group}' ORDER BY id (7) sql: --> SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE groupname = 'DEFAULT' ORDER BY id (7) sql: Executing select query: SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE groupname = 'DEFAULT' ORDER BY id (7) sql: Group "DEFAULT": Merging reply items rlm_sql (sql): Released connection (1) (7) [sql] = ok The old behaviour: [sql] expand: %{User-Name} -> test_account_dsl [sql] sql_set_user escaped user --> 'test_account_dsl' rlm_sql (sql): Reserving sql socket id: 64 [sql] expand: SELECT id,UserName,Attribute,Value,op FROM radcheck WHERE Username = '%{SQL-User-Name}' AND Status = 1 ORDER BY id -> SELECT id,UserName,Attribute,Value,op FROM radcheck WHERE Username = 'test_account_dsl' AND Status = 1 ORDER BY id [sql] User found in radcheck table [sql] expand: SELECT id,UserName,Attribute,Value,op FROM radreply WHERE Username = '%{SQL-User-Name}' ORDER BY id -> SELECT id,UserName,Attribute,Value,op FROM radreply WHERE Username = 'test_account_dsl' ORDER BY id [sql] expand: SELECT GroupName FROM usergroup WHERE UserName='%{SQL-User-Name}' ORDER BY priority -> SELECT GroupName FROM usergroup WHERE UserName='test_account_dsl' ORDER BY priority [sql] expand: SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE GroupName = '%{Sql-Group}' ORDER BY id -> SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE GroupName = 'dsl_192_2048_filter' ORDER BY id [sql] User found in group dsl_192_2048_filter [sql] expand: SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE GroupName = '%{Sql-Group}' ORDER BY id -> SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE GroupName = 'dsl_192_2048_filter' ORDER BY id rlm_sql (sql): Released sql socket id: 64 ++[sql] = ok and if no check item matches: [sql] expand: %{User-Name} -> test_account_dsl [sql] sql_set_user escaped user --> 'test_account_dsl' rlm_sql (sql): Reserving sql socket id: 61 [sql] expand: SELECT id,UserName,Attribute,Value,op FROM radcheck WHERE Username = '%{SQL-User-Name}' AND Status = 1 ORDER BY id -> SELECT id,UserName,Attribute,Value,op FROM radcheck WHERE Username = 'test_account_dsl' AND Status = 1 ORDER BY id [sql] User found in radcheck table [sql] expand: SELECT id,UserName,Attribute,Value,op FROM radreply WHERE Username = '%{SQL-User-Name}' ORDER BY id -> SELECT id,UserName,Attribute,Value,op FROM radreply WHERE Username = 'test_account_dsl' ORDER BY id [sql] expand: SELECT GroupName FROM usergroup WHERE UserName='%{SQL-User-Name}' ORDER BY priority -> SELECT GroupName FROM usergroup WHERE UserName='test_account_dsl' ORDER BY priority [sql] expand: SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE GroupName = '%{Sql-Group}' ORDER BY id -> SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE GroupName = 'dsl_192_2048_filter' ORDER BY id [sql] Checking profile DEFAULT [sql] sql_set_user escaped user --> 'DEFAULT' [sql] expand: SELECT GroupName FROM usergroup WHERE UserName='%{SQL-User-Name}' ORDER BY priority -> SELECT GroupName FROM usergroup WHERE UserName='DEFAULT' ORDER BY priority [sql] expand: SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE GroupName = '%{Sql-Group}' ORDER BY id -> SELECT id,GroupName,Attribute,Value,op FROM radgroupcheck WHERE GroupName = 'DEFAULT' ORDER BY id [sql] User found in group DEFAULT [sql] expand: SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE GroupName = '%{Sql-Group}' ORDER BY id -> SELECT id,GroupName,Attribute,Value,op FROM radgroupreply WHERE GroupName = 'DEFAULT' ORDER BY id rlm_sql (sql): Released sql socket id: 61 ++[sql] = ok Greetings, Daniel Finger
On Apr 9, 2019, at 4:39 AM, Daniel Finger <daniel.finger@ewetel.de> wrote:
I am tryiing to recreate the old behaviour I had with freeRADIUS 2:
If User has correct credentials and no group the user belongs to matches, read a default group, which rejects access. We have no Fall-Through Attributes in the Database.
If I configure the sql module in freeRADIUS 3.0.18 like I had with FR2: read_groups = yes read_profiles = yes default_user_profile = "DEFAULT"
The server works as documented: https://wiki.freeradius.org/modules/Rlm_sql
Do you have a suggestion for me how to change the configuration, so it behaves like the old Radius Server?
You will need to change your configuration to match how v3 works. Alan DeKok.
participants (2)
-
Alan DeKok -
Daniel Finger