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

DefaultLdapAuthoritiesPopulator配置groupSearchFilter含groupRoleAttribute时抛出NPE

这不是Spring实现的Bug,问题出在LDAP搜索过滤器的语法不符合规范。

错误原因

LDAP的多条件组合过滤必须用逻辑操作符(与&/或|/非!)包裹所有条件,你当前使用的过滤条件(cn=PREFIX*)(uniqueMember={0})是非法格式:两个并列条件没有用逻辑符包裹,LDAP服务无法识别该过滤规则,返回的结果结构不符合Spring Security LDAP组件的预期,进而在属性解析阶段触发空指针异常。

修复方案

将setGroupSearchFilter的入参调整为合法的与条件格式即可,修改后的完整代码如下:

FilterBasedLdapUserSearch filterSearch = new FilterBasedLdapUserSearch(baseDn, "cn={0}", connection);

binder = new BindAuthenticator(connection);
binder.setUserSearch(filterSearch);
binder.afterPropertiesSet();

populator = new DefaultLdapAuthoritiesPopulator(connection, searchBase);
// 用&包裹两个需要同时满足的条件,外层再加一对括号符合LDAP过滤器语法
populator.setGroupSearchFilter("(&(cn=PREFIX*)(uniqueMember={0}))");
populator.setGroupRoleAttribute("cn");
populator.setRolePrefix("");
补充说明

如果需要使用或逻辑过滤,将逻辑符替换为|即可,格式为(|(条件1)(条件2));若需要使用非逻辑,格式为(!(条件))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:45:02