如何将自定义属性添加到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),或辅助类(不能让这样的一个对象类型本身,但它扩展了另一个对象类)。
因此,定义一个辅助类来“保留”您的新属性,然后添加一个条目到您的目标对象的对象类中,并添加您的类的名称,然后您可以将该属性添加到用户。
我们一直这样做。
嗨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
这很有趣,您是否在扩展代码中的模式?通常我会在安装时通过导入的LDIF文件来完成此操作。 – geoffc 2010-05-12 02:17:04