Active-Directory

帶有嵌套組的 ldap 查詢

  • September 13, 2017

我嘗試建構一個到 MS Active Directory 的 ldap 查詢。我發現有一個 LDAP_MATCHING_RULE_IN_CHAIN 類型可以這樣做。這導致以下語法:

(&(sAMAccountName=Benna)(memberof:1.2.840.113556.1.4.1941:=CN=Group1,OU=Root,DC=domain,DC=local))

問題是:

查詢*線上列舉第一個嵌套組。

在我的範例中,Group1 具有以下成員組:

  • 域管理員
  • 域成員
  • 域電腦

Benna 在組域成員中,但查詢沒有給我結果*。

當我將過濾器更改為

(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:=CN=Group1,OU=Root,DC=domain,DC=local))

我可以看到,該查詢僅列舉組“域管理員”* 的成員。

這就是它與我上面的查詢不匹配的原因。

為什麼會發生這種情況?

*用 adsiedit.msc 測試

編輯:

好的 - 看起來這就是原因

https://support.microsoft.com/en-us/kb/275523

但是是否也可以為 primaryGroupID 屬性建構對嵌套組的查詢?或者有沒有辦法有一個單一的 ldap 查詢,你可以用它來查找使用者是否是組的成員(也可以有嵌套組)?

謝謝,托馬斯

好的 - 它接縫,限制是域林級別低於 2003 年。

https://support.microsoft.com/en-us/kb/275523

將森林模式更改為 2003 後,它應該可以工作。我改變了,但目前它不起作用……將等待幾分鐘並希望它是解決方案。

使用舊的命令行工具非常煩人,但使用 Remore 伺服器管理工具獲得的 ActiveDirectory Powershell 模組有一種返回所有嵌套組成員的簡單方法:

Get-ADGroupMember “組名” -recursive

這是解釋該命令的 kb 文章:https ://technet.microsoft.com/de-de/library/ee617193.aspx

如果您的 AD 至少在 Server 2008 R2 上,則此方法有效。

引用自:https://serverfault.com/questions/677864