如何配置WSO2 IS 5.10支持姓氏为Service的AD用户认证?
解决WSO2 IS 5.10无法搜索到姓氏为"Service"的AD用户问题
排查与解决步骤:
检查AD用户存储的搜索过滤器配置
- 登录WSO2 IS管理控制台,进入
身份 > 用户存储 > 你的AD用户存储 - 查看「用户搜索过滤器」字段,默认配置可能未明确包含姓氏(
sn)的匹配逻辑。建议修改为同时匹配用户名和姓氏的过滤器:(&(objectClass=user)(|(sAMAccountName=*?*)(sn=*?*))(!(objectClass=computer))) - 保存配置后,重启WSO2 IS服务,重新尝试搜索用户。
- 登录WSO2 IS管理控制台,进入
禁用或调整WSO2的敏感关键词过滤
WSO2 IS可能默认对部分关键词(如"Service")做了特殊拦截,需修改部署配置:- 打开
<IS_HOME>/repository/conf/deployment.toml,添加以下配置:[user_store] enable_case_insensitive_search = true [ldap.user_store] search_filter_mode = "OR" - 若上述配置无效,可进一步检查
<IS_HOME>/repository/conf/identity/identity.xml中的<UserSearchFilter>节点,确保没有针对sn属性的排除规则。
- 打开
验证AD属性映射与搜索范围
- 确认AD用户存储的「属性映射」中,AD的
sn字段正确映射到WSO2的http://wso2.org/claims/lastname(姓氏)属性,避免属性读取异常。 - 检查「用户搜索基础DN」是否包含这两位用户所在的OU,确保搜索范围覆盖目标用户。
- 确认AD用户存储的「属性映射」中,AD的
通过LDAP日志排查实际查询语句
- 开启LDAP调试日志,修改
<IS_HOME>/repository/conf/log4j2.properties:logger.ldap.name = org.wso2.carbon.user.core.ldap logger.ldap.level = DEBUG - 重启服务后执行用户搜索,查看
<IS_HOME>/repository/logs/wso2carbon.log中的LDAP查询语句,确认是否正确发送了sn=Service的过滤条件,排查是否存在查询逻辑被篡改的情况。
- 开启LDAP调试日志,修改
清除用户搜索缓存
- 进入管理控制台
系统 > 缓存管理,找到「UserCache」并清除缓存,避免旧的搜索结果干扰。
- 进入管理控制台
额外验证
使用LDAP客户端(如Apache Directory Studio)直接连接AD,执行查询(&(objectClass=user)(sn=Service)),确认AD本身能返回目标用户,排除AD端的问题。
内容的提问来源于stack exchange,提问作者Miguel GW
相关产品推荐
相关产品推荐

