2013-10-16 113 views
4

我試圖在我的ZF2開發的Web應用程序中實現LDAP身份驗證。 LDAP認證在Windows 7中工作正常。無法連接LDAP服務器 - 在ldap_bind()中發出問題;

但是,將應用程序移至LINUX機器後,LDAP認證不起作用。我總是得到錯誤的:警告:的ldap_bind():無法綁定到服務器:無法在線聯繫LDAP服務器LdapConnect.php 20

我用腳本爲:

$ldaphost = "ldap://xxxx.net"; 
$ldapport = 389; 
$ds = ldap_connect($ldaphost, $ldapport) or die("Could not connect to $ldaphost"); 
if ($ds) 
{ 
    $username = "[email protected]"; 
    $upasswd = "password"; 
    $ldapbind = ldap_bind($ds, $username, $upasswd); 

    if ($ldapbind) 
    { 
     print "Congratulations! you are authenticated successfully."; 
    }else{ 
     print "Better luck next time!"; 
    } 
} 

我應該安裝任何軟件包還是應該進行任何配置設置?

注:如果我給的IP地址,然後它工作正常,但如果我給了域名,那麼它是不工作。

請幫我解決問題。

+0

夫婦調試技術我建議是1)確保你的Linux節點可以ping你的LDAP節點2)確保你的LDAP綁定到正確的IP地址。我看到LDAP服務器綁定到localhost/127.0.0.1,並導致遠程應用程序連接到它。 – beyonddc

+0

Ldap節點ping工作正常。我已經給出了適當的IP地址進行綁定。事件不起作用。同樣的事情在開發LINUX機器上工作正常,但不在服務器LINUX機器上。 Plz幫助我。 – KumarA

+0

你有沒有在Linux節點上安裝php-ldap? – ffledgling

回答

2

該庫可能在​​2或不同版本之間不同。你會驚訝於有多少變種的ldap客戶端。在你的立場中,我會(如果有的話)使用ldap客戶端以幾種不同的方式進行相同類型的連接。

例如標準ldapsearch上的「-x」: -x使用簡單身份驗證代替SASL。

所以你可以表達這樣的連接:

的ldapsearch -h xxxx.net -p 389(ETC) 的ldapsearch -x -h LDAP://xxxx.net:389(這實際上應該是 - H ..)

等等。 您的代碼之外的東西也有可能成爲問題。 Prod服務器通常具有對服務器/客戶端透明的防火牆和代理(例如F5)。 確保您的最終代碼具有用於綁定和搜索的異常處理。我對php的實現並不太熟悉,而且doco很薄弱。通常你會使用同步綁定。

你能證實上面的代碼和你在Windows上完全一樣嗎?我問的原因是,看這裏:http://php.net/manual/en/function.ldap-connect.php看來,你可能會混合2種類型的綁定。我絕對不會在標準python中那樣做。

因此,如果使用URI通常你會做這樣的:

ldap_connect("ldap://blah:389") 

,如果您是通過主機/端口組合連接:

ldap_connect("blah","389") 

以最小的異常信息我最好的猜測是它實際上試圖綁定到端口「389」上的主機名「ldap://xxxx.net」。

相關問題