簡體   English   中英

無法連接LDAP服務器-ldap_bind()中的問題;

[英]Can't connect LDAP server - issue in ldap_bind();

我試圖在以ZF2開發的Web應用程序中實現LDAP身份驗證。 LDAP身份驗證在Windows 7中工作正常。

但是,將應用程序移至LINUX計算機后,LDAP身份驗證不起作用。 我總是收到以下錯誤消息: 警告:ldap_bind():無法綁定到服務器:無法在第20行的LdapConnect.php中聯系LDAP服務器

我將腳本用作:

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

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

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

注意: 如果提供IP地址,則可以正常工作;但是,如果提供域名,則不能正常工作。

請幫我解決問題。

2之間的庫可能不同,也可能不同。 您會驚訝於ldap客戶端有多少種變體。 在您的位置,我將(如果可用)使用ldap客戶端以幾種不同方式進行相同類型的連接。

例如,標准ldapsearch上的“ -x”:-x使用簡單身份驗證而不是SASL。

因此,您可以這樣表示連接:

ldapsearch -h xxxx.net -p 389(等)ldapsearch -x -h ldap://xxxx.net:389(實際上應該是-H ..)

等等。 代碼之外的內容也可能成為問題。 產品服務器通常具有對服務器/客戶端透明的防火牆和代理(例如F5)。 確保最終代碼具有綁定和搜索的異常處理。 我對php實現不太熟悉,doco有點薄。 通常,您將使用同步綁定。

您可以驗證上面的代碼與Windows上的代碼完全一樣嗎? 我問的原因是看這里: http : //php.net/manual/en/function.ldap-connect.php看來您可能正在混合兩種類型的綁定。 我絕對不會在標准python中那樣做。

因此,如果通常使用URI,則可以這樣做:

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

如果您通過主機/端口組合進行連接:

ldap_connect("blah","389")

在異常信息最少的情況下,我最好的猜測是它實際上試圖綁定到端口“ 389”上的主機名“ ldap://xxxx.net”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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