FreeRADIUS LDAP过滤器未应用用户名的问题求助
问题分析
从日志可见,LDAP搜索过滤器中的%{User-Name}变量未被实际传入的用户名test替换,而是以字面量形式执行搜索,这会导致无法匹配到目标用户。
解决方案
- 检查LDAP模块配置文件(通常为
/etc/freeradius/3.0/mods-available/ldap)中的filter配置,确保变量语法正确,示例:filter = "(&(objectClass=user)(sAMAccountName=%{User-Name}))" - 确认
preprocess模块未对User-Name属性进行意外修改或清空。查看/etc/freeradius/3.0/mods-available/preprocess中的配置,确保没有stripprefix或stripsuffix这类规则导致User-Name丢失。 - 尝试用
%{control:User-Name}替代%{User-Name},部分场景下属性会被存储在control命名空间中:filter = "(&(objectClass=user)(sAMAccountName=%{control:User-Name}))" - 开启FreeRADIUS调试模式,执行
radiusd -X启动服务,重新发起认证请求,查看变量展开的详细过程,确认User-Name属性是否正常传递到LDAP模块。 - 检查LDAP模块配置中的
expand_filter选项,确保设置为yes(默认值为yes,若被手动改为no会导致变量不展开):expand_filter = yes
内容的提问来源于stack exchange,提问作者Wilmer Wubs
相关产品推荐
相关产品推荐

