我使用以下查询来查找每个用户所属的组:
(&(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
我的查询问题很少:
理想情况下,我只想将查询作为:
(&(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))
但这不起作用。
有没有这样做?
谢谢, 道穆埃尔。
答案 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
备注:samAccountName
或userPrincipalName
是您可以依赖的属性,用于Active Directory中条目的唯一性,而不是CN的情况(管理员可以更改它)
答案 1 :(得分:0)
我的猜测是使用这种技术是不可能的。你需要在这里使用通配符:
(&(objectCategory=group)(member=CN=UID,*))
这对于DN属性(例如存储在'member'属性中的属性)是不可接受的:
http://msdn.microsoft.com/en-us/library/ms676930(v=vs.85).aspx
我的建议是:使用一些工具为您生成'丑陋'查询(使用上面提到的语法)并使用最终结果“提供”您的工具。看不到任何选项,对不起......