java 通过ldap 如何修改ad域的域账号

域账号原来是lixi,如何通过程序修改为liqian,其他的属性信息不改变

  • 这篇博客: java集成ldap验证用户名和密码中的 查找信息 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 连接查找过程可能会出现各种问题,这里推荐两篇博客:
    ldap查询语法
    LDAP的特定错误

    public static void search() throws Exception {
            LdapContext ctx = connetldap();
            // 设置过滤条件
            String filter = "(mail=*)";
            // 限制要查询的字段内容
            String[] attrPersonArray = { "uid", "userPassword", "displayName", "cn", "sn", "mail", "description"};
            SearchControls searchControls = new SearchControls();
            searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
            // 设置将被返回的Attribute
            searchControls.setReturningAttributes(attrPersonArray);
            // 三个参数分别为:
            // 上下文;
            // 要搜索的属性,如果为空或 null,则返回目标上下文中的所有对象;
            // 控制搜索的搜索控件,如果为 null,则使用默认的搜索控件
            NamingEnumeration<SearchResult> answer = ctx.search("你的base", filter, searchControls);
            // 输出查到的数据
            while (answer.hasMore()) {
                SearchResult result = answer.next();
                NamingEnumeration<? extends Attribute> all = result.getAttributes().getAll();
                while (all.hasMore()) {
                    Attribute attr = all.next();
                    System.out.println(attr.getID() + "=" + attr.get());
                }
                System.out.println("============");
            }
        }