0
首先啓用LDAP_bind匿名。是我遇到的問題如下:帶空白用戶名和密碼的ldap_bind()問題
此代碼工作正常沒有問題:
<?php
$ldaprdn = 'uname';
$ldappass = 'password';
$ldapconn = ldap_connect("ldap.example.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
?>
下面這一個返回的「成功」不管是什麼
<?php
$ldaprdn = '';
$ldappass = '';
$ldapconn = ldap_connect("ldap.example.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
?>
注意的憑據在這個版本中留下空白。我不喜歡這樣一個事實,即如果憑證留下空白,這件事情會讓你進去。我做錯了什麼?或者簡單地說,這個ldap_bind()是複雜的。我會認爲,如果我用三個參數調用函數,它不應該默認爲匿名。
我可以通過設置用戶名和密碼爲虛擬值,以防萬一用戶名和密碼留空,但這根本不是好的做法。 請幫助...
出處:http://php.net/manual/en/function.ldap-bind.php
謝謝盧卡斯。我正在使用MS「活動目錄」。題? – winteck 2012-04-12 15:30:07
我正在使用MS「活動目錄」。 第一:使用特權綁定(這是否意味着我必須硬編碼該特權帳戶的用戶名和密碼?如果是的話(我試圖避免這種情況) 第二,任何我不應該直接綁定的原因使用提供的憑證?僅供參考:我只是創建一個身份驗證類,以允許用戶使用他們的網絡用戶名和密碼登錄到我的應用程序 感謝盧卡斯 – winteck 2012-04-12 15:37:05
是否每個人都在同一個域?如果是,那麼您可以跳過特權綁定部分,並強制限定每個人的名字,比如「domain \」或者使用他們的UPN,就像「[email protected]」。你可以自己搜索AD(和你一樣)找出每個人的UPN是什麼樣子的,通過這樣做你永遠不會發送一個空白的用戶名,因爲,至少它會有「域」或「@域名.suffix」。讓我知道如果這沒有意義。 –
2012-04-12 19:01:14