2014-07-07 127 views
0

我試圖從這些頁面實現一些代碼,但未成功。 我需要從PHP做LDAP認證,並有這樣的代碼:PHP中的LDAP身份驗證

<?php 
$ldap['user'] = "tester"; 
$ldap['pass'] = "test"; 
$ldap['host'] = '147.32.99.8'; 
$ldap['port'] = 636; 
$ldap['conn'] = ldap_connect($ldap['host'], $ldap['port']) 
or die("Could not conenct to {$ldap['host']}"); 
$ldap['bind'] = ldap_bind($ldap['conn'], $ldap['user'], $ldap['pass']); 
if(!$ldap['bind']) 
{ 
echo ldap_error($ldap['conn']); 
exit; 
} 
echo "<p>"; 
echo ($ldap['bind'])? "Valid Login" : "Login Failed"; 
echo "</p><br />"; 
ldap_close($ldap['conn']); 
?> 

但它不工作。我幾乎可以確定在用戶名中缺少域。但我在哪裏可以找到域名?我只有IP地址。

從Softera的LDAP瀏覽器,我有以下信息: 網址:LDAPS://147.32.99.8:636/CN =測試儀,OU =員工,OU = uceeb,O = cvut

也許還有另外一個錯誤不僅缺少域名,而且我真的是LDAP初學者。 謝謝你的回覆,這將有助於我。

+0

你是什麼意思的「它不工作」?當你嘗試連接時它會死嗎?您是否在錯誤日誌中收到錯誤消息? –

+0

對不起,我忘了寫它。它返回錯誤消息:警告:ldap_bind():無法綁定到服務器:無法聯繫第8行的C:\ Bitnami \ wampstack-5.4.28-0 \ apache2 \ htdocs \ ldap \ index.php中的LDAP服務器 無法聯繫LDAP服務器 – Atreiu

+0

如果您沒有收到連接錯誤(在代碼的第5行),那麼您將連接到服務器。看看這個更多的信息:http://stackoverflow.com/questions/1049653/ldap-and-php –

回答

0

此代碼,有時作品:

function authUserAD($username, $password, $ldap_server="147.32.99.8") { 
    $auth_user = $username; 
    if($connect = ldap_connect($ldap_server)){ 
    ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3); 
    ldap_set_option($connect, LDAP_OPT_REFERRALS, 0); 
    if(ldap_bind($connect, $auth_user, $password)) { 
     ldap_close($connect); 
     return(true); 
    } 
    } 
    ldap_close($connect); 
    return(false); 
} 
if(authUserAD("cn=tester,ou=staff,ou=uceeb,o=cvut", "test")) echo "<p>Login/password OK.</p>"; 
else echo "<p>Connection error.</p>"; 

但在LDAP管理我不得不改變值的要求TLS與口令沒有簡單的鏈接,之後再回到YES。經過這兩個操作後,但沒有這個奇怪的操作如何做到這一點。