You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FreeRadius(MySQL后端)重复用户名认证被拒的配置咨询

解决重复用户名的FreeRADIUS认证问题

问题根源

FreeRADIUS默认从radcheck表查询用户属性时,若同一username对应多条Cleartext-Password(或其他密码类型)记录,认证逻辑只会按顺序尝试第一条记录的密码,后续匹配项不会被校验,导致正确密码因不是第一条而认证失败。

配置调整方案

1. 修改FreeRADIUS SQL模块的认证查询逻辑

编辑FreeRADIUS的SQL配置文件(通常路径为/etc/freeradius/3.0/mods-available/sql),找到authenticate段,替换为直接匹配用户名和密码的查询逻辑:

authenticate {
    sql {
        query = "SELECT 1 FROM radcheck WHERE username = '%{SQL-User-Name}' AND attribute = 'Cleartext-Password' AND value = '%{User-Password}' AND op = ':='"
    }
}

注:如果使用加密密码(如MD5、SHA256),需调整value的匹配逻辑,比如用MySQL加密函数处理%{User-Password}后再匹配。以SHA256为例:SHA2('%{User-Password}', 256) = value

2. 适配DaloRADIUS的用户管理逻辑

默认DaloRADIUS可能限制同一用户名添加重复密码属性,可直接通过MySQL手动插入radcheck记录,或修改DaloRADIUS的用户添加页面逻辑,允许同一username存在多条Cleartext-Password记录。

3. 重启FreeRADIUS服务

配置修改后,重启服务使设置生效:

systemctl restart freeradius

替代方案:增加唯一标识字段

若需要更严谨的用户区分,可给radcheck表新增user_unique_id字段,应用请求认证时携带该标识,再修改FreeRADIUS查询语句同时匹配username和唯一标识:

query = "SELECT 1 FROM radcheck WHERE username = '%{SQL-User-Name}' AND user_unique_id = '%{request:User-Unique-ID}' AND attribute = 'Cleartext-Password' AND value = '%{User-Password}' AND op = ':='"

此方案需应用端配合传递额外标识,适合需要严格区分同名用户的场景。

内容的提问来源于stack exchange,提问作者Karim Prince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:50:34