加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 尝试通过LDAP启用用户时出现WILL_NOT_PERFORM错误

发布时间:2020-12-15 02:31:47 所属栏目:Java 来源:网络整理
导读:我正在尝试通过ldap创建新的Active Directory用户,但用户在创建时被禁用.我试图将userAccountControl属性设置为512,但我收到错误WILL_NOT_PERFORM.我读过这是因为密码没有设置,但我不明白为什么.使用userPassword属性设置创建用户工作正常. 这是代码: // Cr
我正在尝试通过ldap创建新的Active Directory用户,但用户在创建时被禁用.我试图将userAccountControl属性设置为512,但我收到错误WILL_NOT_PERFORM.我读过这是因为密码没有设置,但我不明白为什么.使用userPassword属性设置创建用户工作正常.

这是代码:

// Create a container set of attributes
    Attributes container = new BasicAttributes();

    // Assign the properties we need to set on the user
    container.put(new BasicAttribute("objectClass","user"));
    container.put(new BasicAttribute("cn",userName));
    container.put(new BasicAttribute("sAMAccountName",userName));
    container.put(new BasicAttribute("name",userName));
    container.put(new BasicAttribute("givenName",userName));
    container.put(new BasicAttribute("userPassword",password));

    String fullDomainName = getFullUserName(userName);
    // Create the entry
    try{
        context.createSubcontext(fullDomainName,container);
    }catch(Exception e){
        System.err.println("Error creating user: " );
        e.printStackTrace();
        throw e;
    }

    ModificationItem[] userMods = new ModificationItem[1];
    userMods[0] = new ModificationItem(InitialLdapContext.REPLACE_ATTRIBUTE,new BasicAttribute("userAccountControl","512"));
    try{
        context.modifyAttributes(fullDomainName,userMods);
    }catch(Exception e){
        System.err.println("Could not update userAccountControl flag");
        e.printStackTrace();
        throw e;
    }

我创建用户的第一部分工作,我试图设置userAccountControl标志的第二部分失败.任何帮助将不胜感激.谢谢!

解决方法

我发现了问题…我必须使用unicodePwd属性并确保它已正确编码:

final byte[] quotedPasswordBytes = ('"'+password+'"').getBytes("UTF-16LE");
    container.put(new BasicAttribute("unicodePwd",quotedPasswordBytes));

我在这里找到了答案:

How do I resolve “WILL_NOT_PERFORM” MS AD reply when trying to change password in scala w/ the unboundid LDAP SDK?

http://www.dirmgr.com/blog/2010/8/26/ldap-password-changes-in-active-directory.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读