LDAP PHP链接校验

一、安装依赖扩展

1、Ubuntu/Linux
只有一个PHP版本或在全局的PHP版本安装时

apt-get  install php-ldap

Windows
参考评论区(未尝试):https://www.php.net/manual/en/ldap.installation.php

2、多版本时需要手动编译安装

二、编写代码

<?php

        // 下面是定义ldap服务相关的变量
        // dn是ldap中的数据目录结构    
        // $ldapSrv = "ldap://example.com"; //目标机器的域名
        $ldapSrv = "ldap://127.0.0.1:389"; //目标机器的IP及端口
        $dn = "cn=admin,dc=example,dc=com"; // 这里是使用管理员账号
        $passwd = '123456';
        $base_dn = "dc=example,dc=com"; // 搜索起始目录,这里使用根目录,如果数据库中存在同名,则应该指定更详细的起始目录
        $ldapconn = ldap_connect($ldapSrv) or die("Could not connect to LDAP server.");
        // 建立ldap服务连接方式二
        // $host_name = '127.0.0.1';
        // $port = 389;
        // $ldapconn = ldap_connect($host_name, $port) or die("Could not connect to LDAP server.");
        
        if ($ldapconn) {
            echo '</br>';
            ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); // 指定协议版本,否则默认使用V2版本;

            $ldapbind = ldap_bind($ldapconn, $dn, $passwd);// 开始绑定操作账号,之后的操作将默认使用该账户进行

            // verify binding
            if ($ldapbind) {
                echo "LDAP bind successful...";
                // 登录成功,尝试检索所有数据
                $result = ldap_search($ldapconn,$base_dn, "(cn=*)") or die ("Error in search query: ".ldap_error($ldapconn));
                $data = ldap_get_entries($ldapconn, $result);
            
                // SHOW ALL DATA
                echo '<h1>Dump all data</h1><pre>';
                print_r($data);   
                echo '</pre>';
            } else {
                echo "LDAP bind failed...";
                // 登录失败,获取登录或链接失败原因
                // 在ldap_connect不会进行连接,仅校验格式是否正确,在ldap_bind时才进行第一次连接并登录
                if (ldap_get_option($handle, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error)) {
                    echo "Error Binding to LDAP: $extended_error";
                    // 可能是协议版本等配置与LDAP服务端不一致;
                } else {
                    echo "Error Binding to LDAP: No additional information is available.";
                    // 可能是IP和端口或者域名错误,或者是账号或密码错误;
                }
            }

        }
?>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容