2014-05-18 139 views
0

我对使用PHP的LDAP实现有个疑问。我刚刚开始阅读LDAP,并且仍然无法理解它是如何工作的。我正在开发一个新的应用程序,只有在Active Directory中找到它们时才会授予用户访问权限。我在下面发布的代码确定用户输入的用户名和密码是否在Active Directory中。此代码有效,但是现在我想根据输入的凭据来提取用户的名字。我想提取这些信息的原因是,当用户登录时,他们被重定向到另一个页面(即dashboard.php),它将显示内容和短语“欢迎”用户的名字“。我只是不知道我怎么会去约拉此信息,如果任何人都可以对我应该如何去这样做,将不胜感激提供反馈使用LDAP和PHP查询Active Directory信息

连接到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

您将必须为用户执行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); 

之后,应看到$结果的内容。

也许你将不得不玩$baseDn,过滤器(samAccountName=$username)和检索的属性(array('sn'))获得你正在寻找的值的权利。

我创建了一个能够一次性完成ldap认证和用户信息检索的要点。看看https://gist.github.com/heiglandreas/5689592

+0

非常感谢您提供这些信息。我将不得不尝试一下,我真的很感激这个建议。 – Brandon

相关问题