繁体   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