2016-05-03 81 views
0

我的問題是,當我嘗試檢索屬性'userPassword'的值時,它不會工作我在PHP下工作,問題是該屬性存在當我打開Phpldapadmin我可以看到它,但是當我嘗試使用這個代碼行,以檢索它它不會工作OpenLdap不會檢索用戶密碼

$sr = ldap_search($ds,"ou=people,dc=powerm,dc=com","uid=".$login); 
$data = ldap_get_entries($ds,$sr); 
$password = $data[0]["userpassword"][0]; 

$displayName = $data[0]["displayname"][0]; 
$num_tel =$data[0]["mobile"][0]; 
$mail =$data[0]["mail"][0] 

其他屬性做工精細預期的userPassword

任何一個可以幫助?

謝謝。

回答

2

嘗試指定要顯式返回的屬性。

$dn = 'ou=people,dc=powerm,dc=com'; 
$filter = 'uid=' . $login; 
$attrs = ['displayname', 'userpassword', 'mobile', 'mail']; 

$sr = ldap_search($ds, $dn, $filter, $attrs); 

該目錄可能配置爲不返回此安全敏感屬性,除非您明確要求它。

也可能是該屬性需要特殊權限才能訪問它 - 您是否使用相同憑據連接到代碼中的數據庫,就像在phpLDAPAdmin中執行的操作一樣?

服務器也可以配置爲不返回密碼,除非它是通過加密連接 - 使用傳遞給ldap_connect()ldaps:// URL或使用ldap_start_tls()發起的。

+0

哇。這傢伙*真的*把努力放在這個答案。這必須是我最近在Stack Overflow上看到的最佳答案。如果我需要獲得LDAP密碼,我會完全使用這個答案,因爲它很好,可以做所有的事情。 10/10會再次高舉。 – PeeHaa

+0

使用你的代碼時仍然有同樣的問題,因爲我說它顯示了所有的屬性期望的用戶密碼,我有同樣的配置在服務器端作爲我的同事,他可以檢索userpassword和我我不能,所以我不能不認爲這是一個配置問題 –