我对使用PHP的LDAP实现有疑问。我刚刚开始阅读LDAP,但仍然无法理解它是如何工作的。我正在开发一个新的应用程序,只有在Active Directory中找到它们才会授予用户访问权限。我在下面发布的代码确定用户输入的用户名和密码是否在Active Directory中。此代码有效,但现在我想根据输入的凭据提取用户的名字。我想提取这些信息的原因是,当用户登录时,他们会被重定向到另一个页面(即dashboard.php),该页面将显示内容和短语" Welcome" User Name&First; #34 ;.我只是不确定如何提取这些信息。如果有人能提供关于我应该怎么做的反馈,我将不胜感激。
连接到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!";
}
?>
答案 0 :(得分:0)
您必须为用户执行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