簡體   English   中英

ldap查詢中使用memberOf子句的問題

[英]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);

我究竟做錯了什么?

代碼結果

來自@DaveRandom

第一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM