如何将自定义属性添加到ldap用户?

问题描述:

我使用以下代码在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添加到用户。

您创建属性,然后选择它应该属于的类,然后更新该类。

您可以修改一个基类(自带的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