通用化组的LDAP查询

时间:2012-06-13 02:02:49

标签: active-directory ldap

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

(&(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))

但这不起作用。

有没有这样做?

谢谢, 道穆埃尔。

2 个答案:

答案 0 :(得分:0)

我只是试着重新表述你的问题,但是要发表评论需要很多文字。

您正试图从点头CN=UID开始查找用户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

备注:samAccountNameuserPrincipalName是您可以依赖的属性,用于Active Directory中条目的唯一性,而不是CN的情况(管理员可以更改它)

答案 1 :(得分:0)

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

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

这对于DN属性(例如存储在'member'属性中的属性)是不可接受的:

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

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