簡體   English   中英

ldap_bind():無法綁定到服務器:無法聯系LDAP服務器PHP

[英]ldap_bind(): Unable to bind to server: Can't contact LDAP server PHP

我正在嘗試使用php ldap使用Windows Active目錄對Ldap進行身份驗證。 下面是代碼:

$ldaphost = "abc.flyway.org";

$ldapport = 389;

$ds = ldap_connect($ldaphost, $ldapport)

or die("Could not connect to $ldaphost");

if ($ds)
{
    $username = "human";
    $upasswd = "cryoutloud";

    $ldapbind = ldap_bind($ds, $username, $upasswd);

    if ($ldapbind)
    {print "Congratulations! $username is authenticated.";}
    else
    {print "Nice try, Better luck next time!";}
}

當我將用戶名保留為空白時,會收到祝賀消息,但是在使用用戶名時會出現錯誤。 請協助

在行$username = "human "; human這個詞后面應該有空格嗎? 對我來說似乎是一個錯字。 當您將其保留為空白時,它將嘗試匿名綁定。 嘗試刪除尾隨空格。

您需要使用所謂的“專有名稱”(DN)綁定到LDAP服務器。 如果您省略該設置,並將“ BindDN”-參數保留為空白,則將獲得匿名登錄,該登錄名可能(也可能不會)根據您正在使用的LDAP服務器而起作用。 2013 fi之后的ActiveDirectory不再允許匿名綁定。

DN看起來有點像uid=<username>,dc=users,o=example,c=com或完全不同,但它絕不是用戶名。 因此,如果要通過用戶名對用戶進行身份驗證,則必須使用已知用戶(可以從LDAP-Admin獲取)或匿名訪問來搜索具有該用戶名的用戶的DN。

我在https://gist.github.com/heiglandreas/5689592上創建了一個要點來說明這一點-如果您對LDAP有更多疑問,請隨時聯系我。

暫無
暫無

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

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