`
#rethink#
  • 浏览: 46905 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

php连接LDAP服务器(Active Directory)及信息的检索

阅读更多
LDAP是个Protocol,目前常用的实现有如下三种方案:
1 NDS(Novell Directory Services)
2 Microsoft Active Directory
3 OpenLDAP

 

要实现LDAP,第一步是设计DIT(即Directory Information Tree)。

 

以下连接代码在Microsoft Active Directory(即AD)下验证通过。

最简单的bind方式:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><?php

// LDAP variables
$ldaphost = "192.168.8.5";  // your ldap servers
$ldapport = 389;                 // your ldap server's port number

// Connecting to LDAP

$ldapconn = ldap_connect($ldaphost, $ldapport) or die("Could not connect to $ldaphost");


$ldaprdn  = "testuser";     // ldap rdn or dn
$ldappass = 'testpwd';  // associated password

if ($ldapconn) {

    
// binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

 
//var_dump($ldapbind);

    // verify binding

    if ($ldapbind) {
        
echo "LDAP bind successful...";
    } 
else {
        
echo "LDAP bind failed...";
    }

}

 


是否能采用这种方式,取决于Directory Information Tree的结构。该方式存在明显缺点,要么bind成功,要么失败。即无法分别是用户名错误,还是密码错误。

 

search方式:

   $ldap_host = "192.168.8.5";
    $ldap_port = "389";
    $base_dn = "OU=zzz,DC=test,DC=com,DC=cn";
    $filter = "(cn=*)";
    $ldap_user ="cn=admin,OU=zzz,DC=test,DC=com,DC=cn";
    $ldap_pass = "123456";
    $connect = ldap_connect( $ldap_host, $ldap_port);
    ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);

    $bind = ldap_bind($connect, $ldap_user, $ldap_pass);
    $read = ldap_search($connect, $base_dn, $filter);
    
    $info = ldap_get_entries($connect, $read); 
    echo $info["count"]." entrees retournees<BR><BR>"; 
    for($ligne = 0; $ligne<$info["count"]; $ligne++)
    {
        for($colonne = 0; $colonne<$info[$ligne]["count"]; $colonne++)
        {
            $data = $info[$ligne][$colonne];
            echo $data.":".$info[$ligne][$data][0]."<BR>";
        }
        echo "<BR>";
    }
ldap_close($connect);

 

 其中:

    $ldap_user ="cn=admin,OU=zzz,DC=test,DC=com,DC=cn";

    $ldap_pass = "123456";

这两个语句定义了一个专用的LDAP账户用于登陆到LDAP服务器,该帐号必须具有检索权限。

在登录到LDAP服务器之后,就可以对LDAP中的信息进行检索(ldap_search)了,此时就可以判断某个id是否存在,密码是否正确等等。


在具体开发中采用哪种方式,取决于Directory Information Tree的设计。

分享到:
评论

相关推荐

    ldapdomaindump, 通过LDAP的Active Directory信息转储程序.zip

    通过LDAP的Active Directory信息转储程序 LDAPDomainDump通过LDAP的Active Directory信息转储程序简介在 Active Directory域中,可以以通过LDAP通过任何身份验证的用户( 或者机器) 检索很多有趣的信息。 这使得LDAP...

    什么是LDAP连接工具?如何利用好它.docx

    此工具支持多种 LDAP 服务器,包括 Active Directory、Novell eDirectory 和 Sun Directory Server。Softerra LDAP Browser 还具有安全连接能力,允许用户通过 SSL 或 TLS 进行安全通信,确保数据传输的安全性。 ##...

    AD(Active Directory)查看工具

    描述中提到的“用于查看 Active Directory下的数据,比较方便的工具”,这通常是指一种图形用户界面(GUI)或命令行工具,可以帮助管理员轻松地检索和分析AD数据库中的信息。在这个场景中,提供的文件"ldp.exe"就是...

    WINDOWS下搭建LDAP服务器.

    LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是一种标准的网络协议,用于在分布式环境中存储和检索目录信息。它简化了对X.500目录服务的访问,而X.500是一种复杂的目录服务标准。LDAP基于...

    LDAP服务器配置(协议+服务器+客户机+管理+安全)

    在过去,基于Windows的目录服务器(如Active Directory)在企业环境中占据主导地位,而Linux平台在这一领域相对落后。然而,随着Red Hat Enterprise Linux 4(RHEL4)引入了内置的LDAP服务器,Linux在目录服务方面的...

    Active Directory服务实用教程(pdg格式)

    9. **活动目录应用扩展**:通过轻量级目录访问协议(LDAP)和全局编录(Global Catalog),第三方应用可以方便地集成到Active Directory中,利用其强大的身份验证和目录查询能力。 10. **动态主机配置协议(DHCP)...

    LDAP编辑器:可以连接LDAP和编辑LDAP数据

    1. **连接 LDAP 服务器**:LDAP 编辑器能够连接到各种 LDAP 服务器,包括但不限于 OpenLDAP、Active Directory、Novell eDirectory 等。它支持多种认证方式,如简单认证、Kerberos、证书等,确保安全的连接。 2. **...

    Understanding And Deploying Ldap Directory Services ---- Addison Wesley

    - **服务器软件与工具**:LDAP服务器如OpenLDAP、Microsoft Active Directory提供了存储和检索目录信息的服务。同时,命令行工具和APIs支持与LDAP服务器的交互。 - **国际化**:LDAP支持多种语言和字符集,确保全球...

    ldapdomaindump:通过LDAP的Active Directory信息转储

    在Active Directory域中,任何经过身份验证的用户(或计算机)都可以通过LDAP检索很多有趣的信息。 这使LDAP成为在内部网络的渗透测试的搜集阶段中收集信息的有趣协议。 问题是来自LDAP的数据通常无法以易于阅读的...

    LDAP搭建及其Java代码连接

    LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于存储和检索用户信息、组织结构等元数据。它采用层次化的树状结构,便于管理和查找。在IT领域,LDAP常用于企业内部的身份验证、...

    LDAP服务器搭建--20200703.docx

    LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于存储和检索组织数据,如用户账号、权限信息等。它常用于构建企业级的身份认证和授权系统。本文将手把手教你如何搭建一个LDAP服务器。 ...

    LdapBrowser2.82版和LDAP使用手册

    1. **选择服务器软件**:常见的LDAP服务器有OpenLDAP、Microsoft Active Directory等,根据需求选择适合的软件。 2. **下载与安装**:从官方网站获取安装程序,按照向导指引完成安装。 3. **配置服务器**:设置全局...

    Active_Directory_Programming

    LDAP是访问Active Directory的主要协议之一,通过编写基于LDAP的应用程序,可以实现对目录数据的查询、添加、修改和删除操作。本书将详细介绍如何使用C#、VB.NET等语言进行LDAP编程。 #### 2.2 ADSI编程 Active ...

    ldap 访问AD测试

    标题 "ldap 访问AD测试" 暗示了我们正在讨论如何使用Lightweight Directory Access Protocol (LDAP) 来连接并操作Active Directory (AD) 架构。在IT环境中,AD是一个重要的服务,用于集中管理用户账户、权限和网络...

    LDAP搭建资料

    LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于管理和检索分布式目录服务中的数据。在IT行业中,LDAP被广泛应用于组织内部的身份验证、权限管理和数据共享,尤其在多系统集成和企业...

    Ldap实例源码

    首先,源码中可能包含了使用Java LDAP API(JNDI,Java Naming and Directory Interface)来连接和操作LDAP服务器的部分。JNDI是一个接口,提供了统一的方法来访问不同的命名和目录服务,包括LDAP。通过JNDI,开发者...

    Understanding And Deploying Ldap Directory Services

    - 选择合适的LDAP服务器软件:比较不同的开源和商业LDAP服务器,如OpenLDAP、Active Directory等。 - 配置和安装:步骤化指导如何设置服务器环境,包括网络配置、安全设置和数据库初始化。 5. **安全性与认证**:...

    Ldap和Xsan的配置手册

    1. **Ldap服务器安装**:首先,你需要在服务器上安装Ldap服务器软件,如OpenLDAP或Microsoft Active Directory。这通常涉及编译和配置源代码,或者使用操作系统提供的包管理器。 2. **目录结构规划**:设计合理的...

Global site tag (gtag.js) - Google Analytics