2010-05-07 118 views
2

我使用以下代碼在LDAP中創建了一個屬性。如何將自定義屬性添加到ldap用戶?

attrs.put("NUMERICOID", "1.3.6.1.4.1.42.2.27.4.2.3.1.1.9"); 
      attrs.put("NAME", "myattribute"); 
      attrs.put("DESC", "for JNDITutorial example only"); 
      attrs.put("SYNTAX", "1.3.6.1.4.1.1466.115.121.1.15"); 
      DirContext schema = context.getSchema(""); 
      DirContext newAttr = schema.createSubcontext ("AttributeDefinition/myattribute1", attrs); 

屬性創建成功, 現在我想這個屬性添加到用戶說「USER1」(UID)。

Attributes attributeslist = context.getAttributes(ld.getUserDN(username)); 
      attributeslist.put("myattribute1", ""); 
      context.modifyAttributes(ld.getUserDN("test5"), DirContext.REPLACE_ATTRIBUTE, attributeslist); 

但它給了我對象類違規錯誤。

任何人都可以幫助我解決這個問題嗎?我需要使用java代碼將用戶定義的attribut添加到用戶。

回答

0

您創建屬性,然後選擇它應該屬於的類,然後更新該類。

您可以修改一個基類(自帶的LDAP服務器基礎架構),一個有效的一類(一類對象的,可單獨存在,如爲inetOrgPerson),或輔助類(不能讓這樣的一個對象類型本身,但它擴展了另一個對象類)。

因此,定義一個輔助類來「保留」您的新屬性,然後添加一個條目到您的目標對象的對象類中,並添加您的類的名稱,然後您可以將該屬性添加到用戶。

我們一直這樣做。

+0

嗨geoffc,首先我要感謝你的幫助。對於特定的模式對象,我仍然面臨一個問題。我正在使用下面的代碼來添加DirContext personSchema =(DirContext)schema.lookup(「ClassDefinition/inetOrgPerson」); attributeslist.put(「myattribute3」,「test」); personSchema.modifyAttributes(ld.getUserDN(「test5」),DirContext.ADD_ATTRIBUTE,attributeslist);但我得到「名稱未發現異常」。即使我嘗試使用「createSubcontext」方法也有我得到相同的錯誤。你能幫我解決這個問題嗎? – 2010-05-10 05:21:52

+0

這很有趣,您是否在擴展代碼中的模式?通常我會在安裝時通過導入的LDIF文件來完成此操作。 – geoffc 2010-05-12 02:17:04

相關問題