欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

PHP操作LDAP访问AD域进行登录验证 有大用 有大大用

下面是自己亲自做的有大用

<?php

$host= '10.54.2.2';
$port = '389';//一般都是389
$domain = 'xx.yy.zz';
$account = '1111111';
   
$user = '1111111@'.$domain;//域用户名
$password = 'XXXXXX@3344455';//域用户密码
 



$conn = ldap_connect($host, $port);//不要写成ldap_connect($host.':'.$port)的形式
if ($conn) {
    //设置参数
    ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);//声明使用版本3
    ldap_set_option($conn, LDAP_OPT_REFERRALS, 0); // Binding to ldap server
    $bd = ldap_bind($conn, $user, $password);
    if ($bd) {
        echo 'LDAP 绑定成功';//相当于登录成功
    } else {
        echo 'LDAP 绑定失败';
    }
} else {
    echo '无法连接到AD域服务器';
}
ldap_close($conn);






<?php

$host= 'xx.xx.xx.xx';
$port = '389';//一般都是389
$domain = 'yyyyy.com.cn';
$account = '11111';
   
$user = '11111@'.$domain;//域用户名
$password = 'xxxxxx@cccccc';//域用户密码
 



$conn = ldap_connect($host, $port);//不要写成ldap_connect($host.':'.$port)的形式
if ($conn) {
    //设置参数
    ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);//声明使用版本3
    ldap_set_option($conn, LDAP_OPT_REFERRALS, 0); // Binding to ldap server
    $bd = ldap_bind($conn, $user, $password);
   
    $basedn = "ou=jjjj,ou=kkkk,dc=lllll,dc=com,dc=cn";
    // $filter = "(objectClass=*)";//选择器
    // $filter = "(&(sAMAccountName=史平忠))";//选择器
    $filter = "SamAccountName=111111";    // 111111  是工号
    //$filter="(|(sn=史平忠*)(givenname=史平忠*))";

    $justthese = array('department','company','objectsid');//选择要获取的用户属性

//   $justthese = array('*'); //星号*表示所有用户属性



   
    // $sr=ldap_search($conn, $basedn,$filter );//如果想去到所有属性$sr=ldap_search($ds, $dn, $filter);即可
    $sr=ldap_search($conn, $basedn,$filter,$justthese );
    $info = ldap_get_entries($conn, $sr);
    print_r($info[0]);

    if ($bd) {
        echo 'LDAP 绑定成功';//相当于登录成功
    } else {
        echo 'LDAP 绑定失败';
    }
} else {
    echo '无法连接到AD域服务器';
}
ldap_close($conn);




PHP操作LDAP访问AD域进行登录验证                

1. 启用php-ldap

开启php.ini配置,安装ldap扩展

extension=php_ldap.dll                        

2.操作AD域

复制代码                            
$host= '192.168.1.1';
$port = '389';//一般都是389
$domain = 'domain';
$account = 'myAccount';
 
 
 
$user = 'admin@'.$domain;//域用户名
$password = '123456';//域用户密码
 
$conn = ldap_connect($host, $port);//不要写成ldap_connect($host.':'.$port)的形式
if ($conn) {
    //设置参数
    ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);//声明使用版本3
    ldap_set_option($conn, LDAP_OPT_REFERRALS, 0); // Binding to ldap server
    $bd = ldap_bind($conn, $user, $password);
    if ($bd) {
        echo 'LDAP 绑定成功';//相当于登录成功
    } else {
        echo 'LDAP 绑定失败';
    }
} else {
    echo '无法连接到AD域服务器';
}
ldap_close($conn);
                           
复制代码                            

 


                       

来自   https://www.cnblogs.com/zrn-php/p/10405243.html   


                       


                       


                       


                       

 


                       



   

    php要获取Ldap上的信息,首先必须使php支持ldap:

    1)window可以使用wampserver,通过配置很容易就支持ldap。

    2)Linux下编译PHP时设置 #./configure   --with-ldap

    下面就是连接Ldap获取信息的代码

     $ldap_host = "ldap://10.1.0.15";
    $ldap_port = "389";
    //连接ldap服务器
    $ds = ldap_connect($ldap_host, $ldap_port) or die("Can't connect to LDAP server");
    //设置ldapv3
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    $ldap_user = "pig@exchange.com";
    $ldap_pwd = "`1q`1q`1q";
    //用户名@域和密码验证绑定
    ldap_bind($ds, $ldap_user, $ldap_pwd) or die("Can't bind to LDAP server");
    //如果想匿名绑定ldap_bind($ds)即可
    $dn = "dc=exchange,dc=com";//ldap dn
    $filter = "sAMAccountName=pig";//选择器
    $justthese = array('sn','objectsid');//选择要获取的用户属性
    $sr=ldap_search($ds, $dn, $filter, $justthese);
    //如果想去到所有属性$sr=ldap_search($ds, $dn, $filter);即可
    $info = ldap_get_entries($ds, $sr);
    print_r($info);
    echo "<br/>";
    //用户某项属性取值
    echo $info[0]["sn"][0];
    echo "<br/>";

    关于phpLdap的更多函数说明可以看这里http://www.php.net/manual/en/function.ldap-bind.php

    相关代码免费下载http://download.csdn.net/detail/zfpigpig/4553153
               

  来自 https://blog.csdn.net/zfpigpig/article/details/7952211            

               


           

        

php ldap目录协议,PHP 通过LDAP协议,操作Windows Active Directory

       
           

一、学习如何管理Active Directory

Active Directory 循序渐进系列指南

二、ADExplorer

到网上下载一个ADExplorer,它是Active

Directory浏览器,可以让我们更加清楚认识Active Directory的数据存储方式及格式。

三、域外访问Active Directory

确保将域外计算机的 DNS 分析 程序配置 为与 Active Directory 运用 相同的

DNS 名称服务器;在大多数情况下,假定您要运用 Active Directory 集成的 DNS,则我们把此域外计算机的DNS设置为此Active

Directory服务器IP地址。

详细内容请参照《 运用 Active Directory 执行 Linux 客户端身份验证

四、php 代码

为了使用方便,我使用 adLDAP 来进行编程,这样可以简便很多。

69c5a8ac3fa60e0848d784a6dd461da6.png<?php

require_once (dirname(__FILE__) . ‘/adLDAP.php‘);

$options=array();

try{$options[‘account_suffix‘]="@mydomain.com";

$options[‘base_dn‘]="OU=Accounts,DC=mydomain,DC=com";// 

$options[‘domain_controllers‘]=array("mydomain.com");

$options[‘ad_username‘]="administrator";

$options[‘ad_password‘]="123456";

$ldap = new adLDAP($options);

}catch (adLDAPException $e) {echo $e; exit();

}//var_dump($ldap);

echo ("

\n");
$result=$ldap->authenticate("qiujiayu","qiujiayu");
var_dump($result);
echo("----------------------------------------------------");
$result=$ldap->folder_list(array(‘Marketing‘), ADLDAP_FOLDER, true,‘contact‘);
var_dump ($result);
echo("----------------------------------------------------");
$result=$ldap->all_users();var_dump ($result);
echo("----------------------------------------------------");
$result=$ldap->all_contacts();var_dump ($result);echo(json_encode( ($ldap->contact_info($result[0],array(‘telephonenumber‘)))));
echo("----------------------------------------------------");?>
           

69c5a8ac3fa60e0848d784a6dd461da6.png            

原文:http://www.cnblogs.com/eastson/p/3722084.html


           


           

来自  https://blog.csdn.net/weixin_36371924/article/details/116093460            


           


           


           

PHP LDAP 目录协议函数库            

  在 LDAP 的协议之中,很像硬盘目录结构或倒过来的树状结构。LDAP 的根就是全世界,第一级是属于国别 (countries) 性质的层级,之后可能会有公司 (organization) 的层级,接着是部门 (organizationalUnit),再来为个人。而就像文件,每个人都会有所谓的显名 (distinguished name, 简称 dn),dn 可能像酱子 cn=John Smith,ou=Accounts,o=My Company,c=US。                    

ldap_add:增加 LDAP 名录的条目。                    

ldap_mod_add:增加 LDAP 名录的属性。                    

ldap_mod_del:删除 LDAP 名录的属性。                    

ldap_mod_replace:新的 LDAP 名录取代旧属性。                    

ldap_bind:系住 LDAP 目录。                    

ldap_close结束 LDAP 链接。                    

ldap_connect:连上 LDAP 服务器。                    

ldap_count_entries:搜寻结果的数目。                    

ldap_delete:删除指定资源。                    

ldap_dn2ufn:将 dn 转成易读的名字。                    

ldap_explode_dn:切开 dn 的字段。                    

ldap_first_attribute:取得第一笔资源的属性。                    

ldap_first_entry:取得第一笔结果代号。                    

ldap_free_result:释放返回资料内存。                    

ldap_get_attributes:取得返回资料的属性。                    

ldap_get_dn:取得 DN 值。                    

ldap_get_entries:取得全部返回资料。                    

ldap_get_values:取得全部返回值。                    

ldap_list:列出简表。                    

ldap_modify:改变 LDAP 名录的属性。                    

ldap_next_attribute:取得返回资料的下笔属性。                    

ldap_next_entry:取得下一笔结果代号。                    

ldap_read:取得目前的资料属性。                    

ldap_search:列出树状简表。                    

ldap_unbind:结束 LDAP 链接。                    

来自  https://www.cnblogs.com/wilburxu/p/9154127.html            


           


           

php ldap协议,PHP使用LDAP进行身份验证

我对PHP相对较新,甚至对LDAP更新,我需要只为经过身份验证的用户创建一个页面.

我所有工作的是控制台上的以下命令:

$ldapsearch -b 'dc=ut,dc=ee' -D 'uid=USER,ou=People,dc=ut,dc=ee' -x -w 'PASSWORD' 'uid=USER' 'description'

到目前为止,我已成功使用ldap_connect进行连接,并确定它正在使用协议版本3.我使用了ldap_search和ldap_bind,但所有尝试均未成功.我开始认为这是因为-x和-w选项.或许是因为LDAP仍然让我感到困惑.

任何提示将深深地,深深地感激!

解决方法:

$username = 'user';

$password = 'passwd';

$account_suffix = '@example.com';

$hostname = 'ldap.example.com';

$con = ldap_connect($hostname);

if (!is_resource($con)) trigger_error("Unable to connect to $hostname",E_USER_WARNING);

ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3);

ldap_set_option($con, LDAP_OPT_REFERRALS, 0);

if (ldap_bind($con,$username . $account_suffix, $password))

{

// Logged in

}

ldap_close($con);

标签:php,ldap,authentication

来源: https://codeday.me/bug/20190903/1798274.html

来自  https://blog.csdn.net/weixin_36294852/article/details/115538756            


           


           

HP 获取LDAP服务器Schema数据            

最近工作中一直在与LDAP打交道,在官方推荐的client-apis里,可以很容易找到每个语言对应的API,进而与LDAP服务器交互。但是在用ApacheDirectoryStudio时,这个软件竟然能展示Schema数据,然后认真看了下官方文档,还是没看到有说明查询Schema数据的地方(如果有小伙伴在文档中看到相关说明,希望能留言告诉我)。但是找到了用php写的客户端phpLDAPAdmin,随后通过其源码,发现了如何查询Schema数据。

通过官方文档,我们查到Schema数据包含下面四个部分

  • syntaxes

  • attributes

  • matching_rules

  • objectclasses

以查询objectclasses为例(也可以一次性查询),其对应的查询方法如下

第一种情况


$read_ret = ldap_read($ds, 'cn=Subschema', '(objectClass=subschema)', ['objectclasses']);
$read_ret = ldap_read($ds, 'cn=Subschema', '(objectClass=*)', ['objectclasses']);
                   

如果第一种查询不到,则用第二种


$read_ret = ldap_read($ds, 'cn=Aggregate,cn=Schema,cn=configuration,dc=example,dc=com', '(objectClass=*)';
$read_ret = ldap_read($ds, 'cn=Schema,cn=configuration,dc=example,dc=com', '(objectClass=*)', ['objectclasses']);
$read_ret = ldap_read($ds, 'cn=Schema,ou=Admin,dc=example,dc=com', '(objectClass=*)', ['objectclasses']);
                   

如果第二种查询不到,则用第三种


$read_ret = ldap_read($ds, 'cn=schema,cn=config', '(objectClass=*)', ['objectclasses']);
                   

原文地址:https://segmentfault.com/a/1190000015653433                    

来自   https://www.cnblogs.com/lalalagq/p/9979880.html            


           


           


           

【PHP小记】php中获取Ldap上的信息

           

    php要获取Ldap上的信息,首先必须使php支持ldap:

    1)window可以使用wampserver,通过配置很容易就支持ldap。

    2)Linux下编译PHP时设置 #./configure   --with-ldap

    下面就是连接Ldap获取信息的代码

     $ldap_host = "ldap://10.1.0.15";
    $ldap_port = "389";
    //连接ldap服务器
    $ds = ldap_connect($ldap_host, $ldap_port) or die("Can't connect to LDAP server");
    //设置ldapv3
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    $ldap_user = "pig@exchange.com";
    $ldap_pwd = "`1q`1q`1q";
    //用户名@域和密码验证绑定
    ldap_bind($ds, $ldap_user, $ldap_pwd) or die("Can't bind to LDAP server");
    //如果想匿名绑定ldap_bind($ds)即可
    $dn = "dc=exchange,dc=com";//ldap dn
    $filter = "sAMAccountName=pig";//选择器
    $justthese = array('sn','objectsid');//选择要获取的用户属性
    $sr=ldap_search($ds, $dn, $filter, $justthese);
    //如果想去到所有属性$sr=ldap_search($ds, $dn, $filter);即可
    $info = ldap_get_entries($ds, $sr);
    print_r($info);
    echo "<br/>";
    //用户某项属性取值
    echo $info[0]["sn"][0];
    echo "<br/>";

    关于phpLdap的更多函数说明可以看这里http://www.php.net/manual/en/function.ldap-bind.php

    相关代码免费下载http://download.csdn.net/detail/zfpigpig/4553153

  

来自  https://blog.csdn.net/zfpigpig/article/details/7952211

               

普通分类: