我需要修改LDAP中现有记录的属性。似乎tI获取记录的唯一方法是使用查找:
ctx.modifyAttributes(CN=Joe blue,cn=user,DC=foo,DC=com" , mods); 但我需要通过电子邮件(或登录)获得它。我尝试了几种变体,但得到了一个命名异常,例如:
ctx.modifyAttributes(&(objectClass=user)(mail=jblow*)),cn=user,DC=foo,DC=com)javax.naming.InvalidNameException:(&(objectClass=user)(mail=jblow*)),cn=user,DC=foo,DC=com:[LDAP:错误代码34 - 0000208F: NameErr: DSID-031001BA,问题2006 (BAD_NAME),数据8349,最佳匹配:'(&(objectClass=user)(mail=jblow*)),cn=user,DC=foo,DC=COM,
任何建议都将不胜感激。
发布于 2010-07-28 12:00:48
不能为修改操作提供搜索筛选器。您需要提供一个完整的DN,如您的第一个示例所示。
因此,您必须首先在cn=user,dc=foo,dc=com的基本DN中搜索(mail=jblow*),以查找感兴趣对象的完整DN。
然后,您可以根据完整的DN进行修改。
发布于 2011-02-15 23:57:28
正如geoffc所说,您需要将"distinguishedName“与mods一起传递给modifyAttributes函数。
您可以创建一个单独的函数,根据搜索约束(mail=jblow*)查询LDAP,并返回"distinguishedName“字符串。然后将函数传递给ctx.modifyAttributes()。
String dn = distinguishedNameQuery();
ctx.modifyAttributes(dn, mods);https://stackoverflow.com/questions/3348733
复制相似问题