2011-03-15 212 views

回答

7

連接打開會話。綁定是實際驗證你的東西。因此,您已連接但未使用有效憑證登錄。

+3

這個答案不正確。我能夠獲得PHP警告:ldap_bind():無法綁定到服務器:無法在...在一臺服務器上聯繫LDAP服務器,而我能夠使用相同的憑據來獲得'true'作爲綁定的結果在我的本地機器上。 – kush 2016-08-09 19:30:08

+0

'ldap_connect'方法不連接或打開服務器的會話。從文檔**注意:此功能不會打開連接。它檢查給定的參數是否合理,並且可以在需要時立即打開連接。**。執行'ldap_bind'將啓動連接,'ldap_start_tls'也將啓動。 – ChadSikorra 2017-02-09 15:20:46

-2

中的ldap_bind()函數詢問了三個參數:

  1. 資源ID
  2. 一個RDN
  3. 與RDN的RDN及密碼關聯的密碼是可選的

如果僅使用資源ID綁定: -

// $ldap=ladap_connect(*hostname*,*port*); 
// ldap_connect() returns a resource id 
ldap_bind() returns a boolean value(true or false) 
ldap_bind($ladp); //annonymous bind  
$lb=ldap_bind($ldap,"uid=xxx,ou=something,o=hostname.com","password"); //used to authenticate 

這應該工作,如果不是那麼你使用無效的憑據。

+1

請改善您的答案的格式,特別是使用列表和代碼格式 - 請參閱[編輯幫助](http://stackoverflow.com/editing-help)。 – 2011-06-24 07:46:02

+0

@ObenSonne請改善您的評論或答案本身的拼寫。 – 2013-11-26 09:16:08

+0

@CeesTimmerman謝謝你指出。您可能想要注意http://stackoverflow.com/review/ – 2013-11-29 21:08:55

2

我沒有與我在這裏閱讀的內容相匹配的經驗。我試圖

$ds=ldap_connect("goblydeegook",336); 
if($ds) echo "successful"; 

,我獲得「成功」的響應

+1

[ldap_connect()]的php.net文檔的返回值部分(http://us3.php.net/manual/en/) function.ldap-connect.php)解釋了爲什麼$ ds是真實的。以下是相關部分:'當使用OpenLDAP 2.x.x時,ldap_connect()將始終返回資源,因爲它實際上並未連接,只是初始化連接參數。實際連接發生在下一次調用ldap_ * funcs時,通常使用ldap_bind()。' – rynemccall 2013-03-21 19:35:32

3

對RHEL7(CentOS7)這個錯誤是由於SELinux的限制端口HTTPD可以使用。

LDAP端口389和636是不是默認允許列表中,您可以允許與:

fsockopen('LDAP-Server-IP', 389); 

setsebool -P httpd_can_network_connect 1 

你可以嘗試一種插座LDAP服務器測試的限制

它會給'權限被拒絕'顯示它被阻止,而不是憑證問題。

同時檢查您的SELinux審計日誌文件是否被其他東西阻塞。

0

有時這個問題將取決於你的環境(Linux操作系統,視窗...)的 嘗試使用這個選項之一綁定:

$connect = ldap_connect("ldap://".$ldap_server); 
$auth_user = 'CN=XXX,OU=XXX,DC=XXX,DC=com'; 
$bind = ldap_bind($connect, $auth_user , $auth_pass); 

$bind = ldap_bind($connect, 'YourDomaine\\'.$auth_user , $auth_pass);