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

如何用Springboot LdapTemplate定期查询AD中已删除用户

如何通过Spring Boot LdapTemplate查询Active Directory中已删除的用户

核心前提说明

Active Directory中被删除的用户默认会被移动到Deleted Objects容器(仅在开启可恢复删除功能时有效,默认开启),要查询这些对象,需满足两个条件:

  • 用于绑定LDAP的账号拥有读取该容器的权限(普通域用户默认无此权限,建议使用域管理员或授权后的账号)
  • 查询时需指定Deleted Objects容器的DN作为根节点,同时使用特定的过滤条件

具体实现步骤

  1. 确定Deleted Objects容器的DN
    格式通常为:CN=Deleted Objects,DC=your-domain,DC=com,替换成你的实际域信息。

  2. 构造查询条件
    需要过滤出已删除的用户对象,核心过滤条件包括:

    • isDeleted=true:标记该对象已被删除
    • objectClass=person:确保是用户对象
    • whenChanged:可选,用于增量同步的时间范围筛选,匹配删除操作的时间
  3. LdapTemplate查询代码示例

    // 定义Deleted Objects容器的DN
    String deletedObjectsDn = "CN=Deleted Objects,DC=your-domain,DC=com";
    // 增量同步的时间阈值
    Date syncDate = ...;
    
    // 构造查询条件:已删除的用户,且删除时间在同步阈值之后
    LdapQuery query = query()
            .base(deletedObjectsDn)
            .where("objectclass").is("person")
            .and("isDeleted").is("true")
            .and("whenChanged").gte(syncDate);
    
    // 执行查询,映射已删除用户的信息(可获取原CN、lastKnownParent等属性)
    List<UserModel> deletedUsers = ldapTemplate.search(query, new AttributesMapper<UserModel>() {
        @Override
        public UserModel mapFromAttributes(Attributes attributes) throws NamingException {
            UserModel userModel = new UserModel();
            // 获取原用户CN
            userModel.setCn(attributes.get("cn") != null ? attributes.get("cn").get().toString() : null);
            // 获取用户删除前所在的OU(可选)
            userModel.setLastKnownParent(attributes.get("lastKnownParent") != null ? attributes.get("lastKnownParent").get().toString() : null);
            return userModel;
        }
    });
    

注意事项

  • 如果AD关闭了可恢复删除功能,被删除的用户会直接被彻底清除,无法通过此方式查询。
  • 部分AD环境中,whenChanged属性会记录删除操作的时间,可用于增量同步的时间过滤;若需更精准的删除时间,可尝试读取whenDeleted属性(部分AD版本支持)。
  • 确保LdapTemplate的配置账号拥有足够权限,否则会抛出权限不足的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:49:51