0

我使用以下查询来查找每个用户所属的组:

(&(objectClass=group)(|(member=cn=UID,OU=ServiceAccounts,OU=MC,DC=ads,DC=myCompany,DC=com,DC=au)(member=cn=UID,OU=BTLY,OU=Sites,OU=MC,DC=ads,DC=myCompany,DC=com,DC=au)))

此查询使用以下基本 DN 工作和运行:

OU=MC,DC=ads,DC=myCompany,DC=com,DC=au

我的查询有几个问题:

  • 我不喜欢使用 OR 运算符来查找服务帐户用户和 BTLY 用户。
  • 我不想对 BTLY 网站进行硬编码,还有其他网站。

理想情况下,我只想将查询设为:

(&(objectClass=group)(|(member=cn=UID,OU=MC,DC=ads,DC=myCompany,DC=com,DC=au))

这样,我不关心用户帐户是否是服务帐户,也不关心该帐户属于哪个站点。不幸的是,该查询不起作用。

有人可以帮我概括一下 LDAP 查询吗?我有点新手,所以我很可能错过了一些完全明显的东西!

谢谢!


谢谢回复。你说的很有道理,但不幸的是,它对我没有帮助。我们正在使用 GlassFish(Java 应用服务器),并将其配置为指向本地 AD 服务器。通常,一个人可以告诉 GlassFish 如何检索用户,例如

(&(objectCategory=user)(CN=UID))

GlassFish 将拾取所有组(可能通过使用memberOf属性)。

这一次,我们使用不同的 AD 服务器来托管不同的用户目录。GlassFish 无法自行检索组。因此,我们可以在一个字段中为 GlassFish 提供自定义查询以查找组。在这个字段中,我已经发布了我发布的查询,该查询有效,但丑陋且冗长。

我想做的是:

(&(objectClass=group)(member=cn=UID))

但这不起作用。

有没有办法做到这一点?

谢谢,穆尔。

4

2 回答 2

0

我只是尝试重新表述您的问题,但要发表评论的文字太多。

您正试图CN=UID从 nod 开始查找用户所属的所有组OU=MC,DC=ads,DC=myCompany,DC=com,DC=au

这可以通过检索memberOf用户本身的属性来完成。唯一的问题(可能不是您的情况)是主要组不在此 DN 列表中,它是使用primaryGroupId属性编码的 appart。

所以

(&(objectCategory=user)(CN=UID))

将进行工作测试:

ldifde -f t.ldf -D "OU=MC,DC=ads,DC=myCompany,DC=com,DC=au" -r "(&(objectCategory=user)(CN=UID))" -l memberof

备注:samAccountName或者userPrincipalName是您可以依赖 Active-Directory 中条目的唯一性的属性,这不是 CN 的情况(管理员可以更改它)

于 2012-06-13T03:56:38.397 回答
0

我的猜测是使用这种技术是不可能的。您需要在此处使用通配符:

(&(objectCategory=group)(member=CN=UID,*))

这对于 DN 属性是不可接受的(例如存储在“成员”属性中的属性):

http://msdn.microsoft.com/en-us/library/ms676930(v=vs.85).aspx

我的建议是:使用一些工具为您生成“丑陋”的查询(使用上面提到的语法)并为您的工具“提供”最终结果。看不到任何选项,抱歉...

于 2012-06-13T09:41:00.170 回答