2012-03-22 7 views
4

LDAPとJava(1.4)を使用してActive Directoryでユーザーを有効にしようとしています。 私は、次のエラーを取得しておくしかし:LDAP/JavaでActive Directoryユーザーを有効にする

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); 
     } 
    } 
:私はすでに私のユーザーがパスワードを持っていることを確認した

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"

、私はちょうどアクティブ

に私のコードを自分のステータスを変更するように見えることはできません

PS: DirContext.ADD_ATTRIBUTEの代わりDirConteを使用するために必要な:私は私のActive Directory用のAD LDSを使用しています

答えて

2

それを見つけましたxt.REPLACE_ATTRIBUTE

+0

詳細については、「多値属性の値の置き換え」(http://ff1959.wordpress.com/2011/07/28/replace-a-value-of)を参照してください。 -a-multi-valued-attribute /)を使用します。 –

+0

複数値は、AD LDS/Activeディレクトリでどのようにブール値になりますか? – Andreas

+1

また、 'enableUser []'の2番目のメンバーを定義するか、次元を1に減らす必要がありました。しかし、サブコンテキストを作成する前に、作成する前にすべての属性を設定しただけではないそれを変更します。 – EJP

関連する問題