2017-06-08 4 views
0

私はLDAPを使用してユーザーを作成しようとしていますが、ユーザーは作成されていますが、ユーザー作成中にそのユーザーを有効にする方法はありません。パラメータが欠落しているか、間違った属性を設定しているか、パスワード設定が間違っています私を助けてください。javaを使用してldapでユーザーを作成して有効にする方法は?

 Attribute userCn = new BasicAttribute("cn", commonName); 
     Attribute samAccountName = new BasicAttribute("samAccountName",samaccountname); 
     Attribute userPassword = new BasicAttribute("userPassword",Password); 
     Attribute oc = new BasicAttribute("objectClass"); 
      oc.add("top"); 
      oc.add("person"); 
      oc.add("organizationalPerson"); 
      oc.add("user"); 
     Attributes entry = new BasicAttributes(true); 
     entry.put(userCn); 
     entry.put(samAccountName); 
     entry.put(oc); 
     entry.put(userPassword); 
String entryDN = "CN=" + userID.trim() + ",OU=abc,OU=def,DC=ghi,DC=jkl"; 
dirContext.createSubcontext(entryDN, entry); 

UPDATE 1

ユーザーのパスワードを設定し、それを可能とするためのユーザーを更新または変更しながら、私は次の例外/エラーを得ていると私は LDAPサーバとの間のプライベート接続を使用していますが、私の環境はSSL/TLSの設定を使用する必要があります。

のErrorCode 53とWILL_NOT_PERFORM

+0

どのLDAP実装を使用していますか?また、スキーマのどの属性によってユーザーがアクティブかどうかが判断されますか? – ipper

+0

のldapの実装 - "アクティブなユーザーを作成する必要がある"と私はなぜそれをアクティブにする責任があるのか​​知りません。 – rajatravigarg14

+0

私が実装で意味することは、 'ブランド'、Active Directory、OpenLdapなどです。 ユーザーが無効になっているとは何ですか?特定のクライアントを使用していますか? – ipper

答えて

0

アフィク、これは、あなたが(デフォルトで)Microsoft Active Directoryの中に存在していない「のuserPassword」属性を設定しているという事実のためでなければなりません。

unicodePwdはMicrosoft Active Directoryのパスワード属性であり、JNDIから「特別な」エンコーディングを設定する必要があります。このsource codeに例を示します。

したがって、パスワードなしでMicrosoft Active Directory内で作成されたユーザーエントリは、デフォルトで無効になっています。

また、Microsoft Active Directoryの場合は、MUST use SSL-TLSでunicodePwdを変更してください。

作成したユーザーエントリでunicodePwdを使用しないで、userAccountControl = 544属性を設定してみてください。作成後にこれを行う必要があります。

+0

あなたのコードを試しましたが、エラーコード53と "WILL_NOT_PERFORM" EXCEPTION – rajatravigarg14

関連する問題