启用与LDAP / Java的Active Directory用户 [英] Enable an Active Directory user with LDAP/Java

查看:263
本文介绍了启用与LDAP / Java的Active Directory用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想启用与LDAP和Java(1.4)在Active Directory用户。 不过,我不断收到以下错误:

I'm trying to enable a user in the Active Directory with LDAP and Java (1.4). However I keep getting the following error:

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

java.lang.NullPointerException at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1432) at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDir Context.java:255) at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(Partial CompositeDirContext.java:172) at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(Partial CompositeDirContext.java:161) at javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext. java:146) at be.ideal.LDAP.newuser.main(newuser.java:61) Exception in thread "main"

我已经证实了我的用户有一个密码,我似乎无法对他的状态更改为主动

I already confirmed that my user has a password, I just can't seem to change his status to active

我的code:

 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:我使用AD LDS我的活动目录

PS: I am using AD LDS for my active directory

推荐答案

发现: 需要使用DirContext.ADD_ATTRIBUTE而不是DirContext.REPLACE_ATTRIBUTE

Found it: Needed to use DirContext.ADD_ATTRIBUTE instead of DirContext.REPLACE_ATTRIBUTE

这篇关于启用与LDAP / Java的Active Directory用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆