【问题标题】:Getting WILL_NOT_PERFORM error when trying to enable user via LDAP尝试通过 LDAP 启用用户时出现 WILL_NOT_PERFORM 错误
【发布时间】:2012-02-15 20:12:38
【问题描述】:

我正在尝试通过 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 标志的第二部分失败。任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: java active-directory


    【解决方案1】:

    我发现了问题...我必须使用 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

    【讨论】:

      【解决方案2】:

      您是否以有权执行此操作的用户身份连接到 LDAP?或者您是作为该用户还是其他具有有限权限的用户连接到 LDAP?也许您有权创建一个新用户但不能执行这种修改操作?只是一个想法,这是我以前遇到过的事情,在意识到自己的错误之前就撞到了墙上。祝你好运

      【讨论】:

      • 我以管理员身份连接。不知道他有没有权限执行修改操作……怎么查?
      • @Osman 如果您以管理员身份连接,那么这不是您的问题。抱歉,我无法提供更多帮助,我们的 LDAP 服务器不使用 AD,所以我不太熟悉它
      猜你喜欢
      • 1970-01-01
      • 2017-03-23
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2023-01-13
      • 1970-01-01
      相关资源
      最近更新 更多