2017-05-24 75 views
0

我試圖創建一個自定義屬性的LDAP用戶,但我得到一個的Java LDAP用戶創建

javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - 0000207D: UpdErr: DSID-0315166D, problem 6002 (OBJ_CLASS_VIOLATION), data -2131045114 

當我從代碼中刪除userId自定義屬性,它運行完美所以我可以創建用戶,但是這個自定義屬性被第三方應用程序使用,我應該使用該屬性來創建它。

你能否告訴我這個屬性是怎麼回事?可能是什麼問題?由於

這裏是我得到的錯誤代碼:已被修改爲「單自定義屬性」

Attributes container = new BasicAttributes(); 

     Attribute objClasses = new BasicAttribute("objectClass"); 
     objClasses.add("top"); 
     objClasses.add("person"); 
     objClasses.add("organizationalPerson"); 
     objClasses.add("user"); 

     this.cnValue = new StringBuffer(firstName).append(" ").append(lastName).toString(); 
     Attribute cn = new BasicAttribute("cn", cnValue); 
     Attribute sAMAccountName = new BasicAttribute("sAMAccountName", userName); 
     Attribute principalName = new BasicAttribute("userPrincipalName", userName + "@" + DOMAIN_NAME); 
     Attribute givenName = new BasicAttribute("givenName", firstName); 
     Attribute sn = new BasicAttribute("sn", lastName); 
     Attribute uid = new BasicAttribute("uid", userName); 
     Attribute sshPublicKey = new BasicAttribute("sshPublicKey", "AAAAAAAAAAAAAAAAAAAAAAAA"); 

     Attribute userPassword = new BasicAttribute("userpassword", password); 

     container.put(objClasses); 
     container.put(sAMAccountName); 
     container.put(principalName); 
     container.put(cn); 
     container.put(sn); 
     container.put(givenName); 
     container.put(uid); 
     container.put(userPassword); 
     container.put(sshPublicKey); 

     container.put("loginId", "aaa"); //When I remove this, user can be created successfully 

     this.context.createSubcontext(getUserDN(cnValue, organisationUnit), container); 

回答

1

假設架構。 (你沒有在問題中提到),你可能需要創建用戶,然後在添加操作後添加自定義屬性值。

1

除非您修改了其中一個objectClass -es的架構,否則您需要添加extensibleObject對象類以使用自定義屬性。