2017-06-08 63 views
0

我想創建一個用戶在ldap中使用java,但是用戶正在創建,但它被禁用,如何在創建用戶時啓用它,發佈我用於創建的代碼。是否有任何參數丟失或設置錯誤屬性或密碼設置是否錯誤?幫幫我。如何使用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配置。

錯誤碼53和WILL_NOT_PERFORM

+0

您正在使用哪個LDAP實現以及模式中的哪個屬性確定用戶是否處於活動狀態? – ipper

+0

爲ldap實現 - 「需要創建一個活動用戶」,我不知道負責使它活躍的屬性這就是爲什麼發佈的問題 – rajatravigarg14

+0

我的意思是實施是什麼'品牌',活動目錄,OpenLdap或其他。 什麼告訴你一個用戶被禁用?你是否在使用特定的客戶端? – ipper

回答

0

AFIK,這一定是由於事實,你設置的「userpassword」屬性,它不存在於微軟活動目錄(默認情況下)。

unicodePwd是Microsoft Active Directory中的密碼屬性,它需要根據JNDI設置「特殊」編碼。我們在這個source code中展示一個例子。

因此,默認情況下,禁用Microsoft Active Directory中創建的用戶條目而無密碼。

此外,對於Microsoft Active Directory您MUST use SSL-TLS更改unicodePwd。

您可能但不推薦嘗試在創建的用戶條目中設置屬性userAccountControl = 544,且不帶unicodePwd。您可能需要在創建後執行此操作。

+0

我試過你的代碼,但它給了我錯誤代碼53和「WILL_NOT_PERFORM」EXCEPTION – rajatravigarg14