Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用LDAP/Java启用Active Directory用户_Java_Active Directory_Ldap_Adlds - Fatal编程技术网

使用LDAP/Java启用Active Directory用户

使用LDAP/Java启用Active Directory用户,java,active-directory,ldap,adlds,Java,Active Directory,Ldap,Adlds,我正在尝试使用LDAP和Java(1.4)在Active Directory中启用用户。 但是,我不断得到以下错误: 位于的java.lang.NullPointerException com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1432)位于 com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDir java:255)在 com

我正在尝试使用LDAP和Java(1.4)在Active Directory中启用用户。 但是,我不断得到以下错误:

位于的java.lang.NullPointerException com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1432)位于 com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDir java:255)在 com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(部分 java:172)位于 com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(部分 java:161)位于 javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext。 java:146)中的be.ideal.LDAP.newuser.main(newuser.java:61)异常 线程“main”

我已经确认我的用户有密码,我只是无法将他的状态更改为活动

我的代码:

 public static void main(String[] args) {
        String userName = "cn=Albert Einstein,ou=Accounts,DC=PORTAL,DC=COMPANY,DC=BE";
        String groupName = "cn=Administrators,cn=Roles,DC=PORTAL,DC=COMPANY,DC=BE";
        boolean isDisabled = false;

        try {

            System.out.println("Creating initial directory context...");
            LdapContext ctx = new InitialLdapContext(X_Ldap.getEnvironment(),
                    null);

            Attributes attrs = new BasicAttributes(true);

            attrs.put("objectClass", "user");
            attrs.put("cn", "Albert Einstein");

String newQuotedPassword = "\"Pass123\"";
            byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");
            attrs.put(new BasicAttribute("unicodePwd", newUnicodePassword));

            attrs.put(new BasicAttribute("msDS-UserAccountDisabled", "FALSE"));

            System.out.println("Creating context...");
            Context result = ctx.createSubcontext(userName, attrs);
            System.out.println("Created account for: " + userName);

            System.out.println("Creating context...");
            Context result = ctx.createSubcontext(userName, attrs);
            System.out.println("Created account for: " + userName);

            try {
                ModificationItem member[] = new ModificationItem[1];
                member[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE,
                        new BasicAttribute("member", userName));

                ctx.modifyAttributes(groupName, member);
                System.out.println("Added user to group: " + groupName);

            } catch (NamingException e) {
                System.err.println("Problem adding user to group: " + e);
            }

            ctx.close();

            System.out.println("Successfully created User: " + userName);

        } catch (NamingException e) {
            System.err.println("Problem creating object: " + e);
        }

        catch (IOException e) {
            System.err.println("Problem creating object: " + e);
        }
    }
PS:我正在为我的active directory使用AD LDS

找到它:
需要使用DirContext.ADD_属性而不是DirContext.REPLACE_属性

有关详细信息,请参阅的进一步讨论。AD LDS/Active directory中布尔值的多值性如何?您还需要定义“enableUser[]”的第二个成员,或将其维数减少为1。但是我不明白为什么你不在创建子文本之前设置你想要的所有属性,而不是创建它然后修改它。我可以设置密码并使用创建属性启用帐户,但是只有在创建用户之后才能将其添加到组中