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 来进行编程,这样可以简便很多。
<?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("----------------------------------------------------");?>
原文:http://www.cnblogs.com/eastson/p/3722084.html
来自 https://blog.csdn.net/weixin_36371924/article/details/116093460
在 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
最近工作中一直在与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上的信息