【问题标题】:JNDI Add Users to Groups with ADSJNDI 使用 ADS 将用户添加到组
【发布时间】:2010-02-23 09:48:42
【问题描述】:

我们一直在尝试使用 JNDI 将用户添加到组中。我们的目录服务器是 Windows 2003 上的 Active Directory。

我们能够很好地创建用户和组。但是,使这些用户成为任何组的一部分是一个问题。下面是代码的样子(灵感来自this):

ModificationItem mod[] = new ModificationItem[1];
mod[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE, 
               new BasicAttribute("member", "CN=User1,OU=LocationOfUser"));
localcontext.modifyAttributes("CN=Group1,ou=Group,ou=LocationOfTheGroup", mod);

我们得到这个错误:

javax.naming.NameNotFoundException: [LDAP: error code 32 - 00000525: 
NameErr: DSID-  031A0F80, problem 2001 (NO_OBJECT), data 0, best match of: ''

我们尝试绑定到子根(而不是在属性中提供完整的 DN)或绑定到根(并在属性中提供完整的 DN)。

编辑:我们尝试了相同的代码,但在用户 CN (CN=abcd,CN=Users) 中使用了一个用户,它可以工作!!!但是为什么它不允许它以外的用户使用呢?

【问题讨论】:

  • 我建议您将问题修改为“通过 JNDI 连接到 ADS 时出错”,因为您的问题是获取连接,而不是添加用户。
  • 我们没有连接问题...问题是将用户添加到组中。

标签: java active-directory ldap jndi


【解决方案1】:

错误提示“NO_OBJECT”。错误代码 32 是 LDAP_NO_SUCH_OBJECT。所以问题是其中一个标识符是错误的。能否列出指定标识符的用户或组?

[编辑] 错误消息显示best match of: '',这意味着它无法匹配路径的任何部分(DN),甚至不匹配第一个元素。我想您必须在您的情况下使用完整路径(从根目录开始)而不是 RDN。

不过,我无法解释为什么您可以通过直接查询找到对象。肯定有什么不同,但除非您发布所有代码,否则我能提供的帮助就差不多了。

【讨论】:

  • 是的,我可以使用两个 DN 来拉取对象,但不能分配给组...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多