2012-10-31 54 views
0

當我連接到LDAP服務器並檢索用戶時,我得到正確的用戶記錄,但我沒有看到任何的memberOf,isMemberOf或任何其它類似的屬性,它告訴我,他們是在什麼組:當使用groupOfUniqueNames定義組時,如何查找用戶所屬的所有LDAP組。

$query = "(&(uid={$username})(objectClass=person))"; 
$result = ldap_search($ldapconnection, $context, $query); 
$user = ldap_get_entries($ldapconnection, $result); 

但是,如果我檢索LDAP組,那麼我就可以看到用戶的列表,其中包含的是正確的:

$query = "(&({cn=".$groupname.")(objectClass=groupOfUniqueNames))"; 
$result = ldap_search($ldapconnection, $context, $query); 
$group = ldap_get_entries($ldapconnection, $result); // Users in array attribute 

這些組是動態groupOfUniqueNames ones,並且每個用戶都是一個uniqueMember o f組。

我錯過了什麼,或者服務器未配置爲顯示memberOf(MS AD)?有什麼辦法可以獲得特定用戶的會員身份,而不必循環遍歷每一個組?

回答

2

我不知道爲什麼你沒有得到的memberOf從您的查詢屬性回來,但你應該能夠檢索與這樣的一個用戶組的成員:

$query = "(&(objectClass=groupOfUniqueNames)(uniqueMember=" . $username . "))"; 

它看起來像uniqueMember默認情況下沒有編入索引(http://msdn.microsoft.com/en-us/library/windows/desktop/ms680520(v=vs.85).aspx),所以如果你有權限訪問並且遇到性能問題,它可能是值得索引的。

+0

謝謝。我已經設法使用它,但必須包含用戶的完整DN作爲$用戶名。 –

相關問題