2012-02-15 6 views
2

ldapを使用して新しいActive Directoryユーザを作成しようとしていますが、作成時にユーザが無効になっています。 userAccountControl属性を512に設定しようとしていますが、WILL_NOT_PERFORMというエラーが発生しています。私はこれがパスワードが設定されていないためですが、私はなぜ言うことができないためです。 userPassword属性を設定してユーザーを作成するとうまくいきます。LDAP経由でユーザを有効にしようとするとWILL_NOT_PERFORMエラーが発生する

// 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フラグが失敗した設定しようとする第二の部分:ここで

はコードです。どんな助けでも大歓迎です。ありがとう!

答えて

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

0

これを行う権限を持つユーザーとしてLDAPに接続していますか?または、このユーザーまたは制限付きの権限を持つ別のユーザーとしてLDAPに接続していますか?おそらく、新しいユーザーを作成する権限はありますが、この種の変更操作は実行できません。ちょうど思考、私は前に実行して、私の間違いを実現する前に壁に頭を打ちました。幸運

+0

私は管理者として接続しています。彼が変更操作を実行する権限を持っているかどうかわかりません...どうすれば確認できますか? – Osman

+0

@Osmanあなたが管理者として接続している場合、それはあなたの問題ではありません。申し訳ありませんが、私はLDAPサーバーにADを使用しないので、私はそれをよく知っているわけではありません – snappymcsnap