[英]issues using memberOf clause in ldap query
我正在嘗試完成與該用戶在此處執行的操作非常相似的操作。
我遵循了答案,但是無法正常工作。 在Active Directory中,我的memberOf字段如下所示:
CN=$VPN Users,CN=Users,DC=iai,DC=pri,CN=$ITAR,CN=Users,DC=iai,DC=pri,CN=allsubscribers,CN=Users,DC=iai,DC=pri
我有效的過濾器是:
(&(objectCategory=person)(sAMAccountName=$p_username))
我正在嘗試以下工作:
(&(objectCategory=person)(sAMAccountName=$p_username)(memberOf=CN=$ITAR))
我曾嘗試將完整DN是CN =用戶,DC = IAI,DC = PRI我的過濾器為好,但我得到:
array(1) { ["count"]=> int(0) }
作為我的回應。
我正在使用ldap 3
這是用php編寫的部分工作身份驗證代碼:
$login = ldap_bind( $url, "username@somedomain", $password );
$attributes = array("displayname", "mailnickname");
$filter = "(&(objectCategory=person)(sAMAccountName=$username))";
$result = ldap_search($url, "CN=Users,DC=iai,DC=pri", $filter, $attributes);
$entries = ldap_get_entries($url, $result);
我究竟做錯了什么?
第一個Var轉儲:
string(70) "(&(objectCategory=person)(sAMAccountName=rmoser)(memberof=*CN=$ITAR*))"
array(1) {
["count"] => int(0)
}
第二個var_dump:
string(70) "(&(objectCategory=person)(sAMAccountName=rmoser)(memberof=*CN=$ITAR*))" array(1) { ["count"] => int(0) }
LDAP過濾器查找完全匹配 。
為了在值的任何位置匹配CN=$ITAR
,您將需要在過濾器通配符*
將其包圍。
試試這個過濾器:
(&(objectCategory=person)(sAMAccountName=$p_username)(memberOf=*CN=$ITAR*))
同樣不要忘記$ITAR
在PHP中是有效的變量名,因此,如果將過濾器字符串放在雙引號中(需要插入以便將$p_username
插入),PHP會嘗試將$ITAR
插入為以及變量,發現它(可能)不存在,最終結果是將其從字符串中剝離。
$filter = "(&(objectCategory=person)(sAMAccountName=$p_username)(memberOf=*CN=\$ITAR*))";
對於任何有關使用PHP構建的動態過濾器的問題,有用的鏈接是this 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.