User name case insensitivity - revisited
Alan DeKok
aland at deployingradius.com
Sat Jun 11 22:22:03 UTC 2022
On Jun 11, 2022, at 2:21 PM, Luveh Keraph <1.41421 at gmail.com> wrote:
>
> I thought I had grasped what is involved in making FreeRADIUS 3.0.* to
> process user names in a case-insensitive way, but I am not so sure now.
That's a bit of an incorrect understanding. The server is composed of a bunch of modules. Each module has it's own configuration. You should be able to configure a particular module to do lowercase checking.
> Here is what I have done:
>
> First, I added the following line in my /etc/raddb/mods-enabled/files:
>
> key = "%{%{Stripped-User-Name}:-%{tolower:%{User-Name}}}"
Or:
key = "%{tolower:%{%{Stripped-Users-Name}:-%{User-Name}}}"
This picks either Stripped-User-Name OR User-Name, and then lowercases the result.
The line you have above only lowercases User-Name, and leaves Stripped-User-Name along.
> I launched my FreeRADIUS server after ths.
>
> I have the following entry in my /etc/raddb/users file:
>
> ijk_user1 User-Password != "IJKpassword1"
> ijk_user1 Cleartext-Password := "IJKpassword1"
Lowercase names there are goo.0
> With this, when I try to ssh as IJK_User1 (notice the mixed case) into a
> system that turns over authentication to my FreeRADIUS server, I get the
> following debugging information at this server:
>
> Sat Jun 11 11:02:25 2022 : Debug: (0) files: EXPAND
> %{%{Stripped-User-Name}:-%{tolower:%{User-Name}}}
> Sat Jun 11 11:02:25 2022 : Debug: (0) files: --> ijk_user1
> Sat Jun 11 11:02:25 2022 : Debug: (0) files: users: Matched entry ijk_user1
> at line 447
So it matches, that's good.
>
> Sat Jun 11 11:02:25 2022 : Debug: (0) Sent Access-Accept Id 64 from
> 192.168.0.55.
> 23:1812 to 192.168.0.66:60600 length 0
>
> Which is fine: the user name gets converted from IJK_User1 to ijk_user1 and
> the authentication with password IJKpassword1 succeeds, as expected.
That's good.
> I then changed the relevant entry in my /etc/raddb/users file as follows:
>
> IJK_User1 User-Password != "IJKpassword1"
> IJK_User1 Cleartext-Password := "IJKpassword1"
That won't work.
The "key" configuration is lowercasing the User-Name from the packet. That lowercased name is then used to compare with the names in the "users" file. The comparison there is cases sensitive.
So it won't work.
> If I understand things correctly, the key = ... line that I added to the
> files file does indeed recast the incoming user name to lowercase.
Yes.
> However,
> the FreeRADIUS server still compares incoming user names against those in
> the users file in a case sensitive way.
That's how it works.
> This is fine, but not quite what I was looking for.
The first example works. Why worry about it?
> Is it possible to get FreeRADIUS to compare user names (and user
> names alone - not passwords) in a real case-insensitive way against those
> in the /etc/raddb/users file?
No.
There's no configuration item, which says "do comparisons in a case insensitive way".
Your first configuration is correct. Use it. Why would you put names into the "users" file in random uppercase / lowercase?
Alan DeKok.
More information about the Freeradius-Users
mailing list