簡體   English   中英

使用LDAP和PHP查詢Active Directory信息

[英]Query Active Directory Info using LDAP and PHP

我對使用PHP的LDAP實現有疑問。 我最近才開始閱讀LDAP,但仍然很難理解它的工作方式。 我正在開發一個新的應用程序,僅當在Active Directory中找到用戶時,才向用戶授予訪問權限。 我在下面發布的代碼確定用戶輸入的用戶名和密碼是否在Active Directory中。 該代碼有效,但是現在我想根據輸入的憑據來提取用戶的名字。 我想獲取此信息的原因是,當用戶登錄時,他們被重定向到另一個頁面(即,dashboard.php),該頁面將顯示內容和短語“歡迎使用“用戶的名字”。如果有人可以提供有關我應該如何做的反饋,那將不勝感激。

連接到LDAP服務器:

<?php
$ldaphost = "name of host"; //LDAP Host
$ldapport = 389; //LDAP Port Number                

$ldapconn = ldap_connect($ldaphost, $ldapport); //Connect to LDAP Host on LDAP Port Number

// Check LDAP connection
if(!$ldapconn) {
    die("Unsuccessful connection to " . $ldaphost . " on port " . $ldapport . "<br />");    
} 
?>

驗證用戶是否在Active Directory中:

<?php
include 'ldap_connect.php';

$username = $_POST['username'];
$password = $_POST['password'];

$ldapbind = ldap_bind($ldapconn, $username, $password);

if ($ldapbind) {
    header("Location: ../dashboard.php");
} else {
    print "Access Denied!";
}
?>

您必須為用戶執行ldap_search才能獲取用戶的屬性。

像這樣:

$ldapresults = ldap_search($ldapconn, $baseDn, 'samAccountName=' . $username, array('sn'), 0, 0, 10);
if (! $ldapresults) {
    die('No results found');
}
$results = ldap_get_entries($ldapconn, $ldapresults);
var_dump($results);

然后,您應該看到$ result的內容。

也許您將不得不使用$baseDn ,過濾器( samAccountName=$username )和檢索到的屬性( array('sn') )來獲得想要的正確值。

我創建了一個摘要,可以一次性進行ldap身份驗證和用戶信息檢索。 看看https://gist.github.com/heiglandreas/5689592

暫無
暫無

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

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