[英]LDAP DN search memberof
目前,我正在嘗試確定用戶是否應該能夠使用LDAP登錄。 我已經閱讀了許多用PHP編寫的LDAP連接,到目前為止,一切都進展順利,直到我想搜索用戶是否屬於某個組中為止。
詳細信息我目前必須連接到LDAP服務器:
這段代碼雖然沒有返回任何結果:
if($bind = ldap_bind($ldap, $username, $password)) {
$filter = "(samaccountname=".$user.")";
$attr = array("memberof");
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");
$entries = ldap_get_entries($ldap, $result);
ldap_unbind($ldap);
}
當我從搜索中忽略$ attr時,雖然沒有找到確定該用戶是否屬於ADMIN組的方法,但確實得到了結果。
從我可以在線閱讀的內容來看,應該使用memberof屬性來查找用戶是否屬於組。
幾件事:
memberOf
屬性將不存在。 memberOf
屬性中。 一種更可靠的方法是使用有點模糊的LDAP過濾器為用戶搜索您的組以及任何嵌套的組:LDAP_MATCHING_RULE_IN_CHAIN規則。 詳細信息在這里 。
在PHP中,它看起來像這樣(未經測試):
$filter = "(member:1.2.840.113556.1.4.1941:=".$user_distinguished_name.")";
$ldap_dn = "LDAP://".$group_distinguished_name;
$attr = array("cn");
$result = ldap_list($ldap, $ldap_dn, $filter, $attr);
其中$user_distinguished_name
是用戶的專有名稱,而$group_distinguished_name
是組的DN。 您可能必須事先獲得這些。
注意我放了ldap_list而不是ldap_search 。 兩者之間的唯一區別是搜索范圍。 我認為ldap_search可能仍然有效,但這不是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.