LDAP组件

5.3版本
欧宝娱乐app下载地址symfony 5.3支持经过乔利德

LDAP组件

LDAP组件提供连接LDAP服务器(OpenLDAP或Active Directory)的方法。

安装

1
$作曲家需要Symfony / LD欧宝娱乐app下载地址AP

笔记

如果在Symfony应用程序之外安装此组件,则必须要求欧宝娱乐app下载地址供应商/ autoload.php.代码中的文件以启用Composer提供的类自动加载机制。读本文更多细节。

用法

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap类提供了对LDAP服务器进行身份验证和查询的方法。

LDAP.班级使用A.欧宝娱乐app下载地址Symfony \ Component \ LDAP \ Adapter \ AdapterInterface与LDAP服务器进行通信。这适配器例如,对于PHP的内置LDAP扩展,可以使用以下选项配置:

主持人
LDAP服务器的IP或主机名
港口
用于访问LDAP服务器的端口
版本
使用LDAP协议的版本
加密
加密协议:SSL.TLS.或者没有任何(默认)
connection_string.
您可以使用此选项而不是主持人港口连接到LDAP服务器
optreferals.
指定是否自动遵循LDAP服务器返回的转介
选项
LDAP服务器定义的选项connectionOptions.

例如,要连接到启动TLS安全LDAP服务器:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;$ LDAP.=LDAP.::创造'ext_ldap'['主持人'=>'我的服务器''加密'=>'ssl']);

或者您可以直接指定连接字符串:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;$ LDAP.=LDAP.::创造'ext_ldap'['connection_string'=>'LDAPS://我的服务器:636']);

绑定()方法使用可分辨名称(DN)和用户的密码来验证先前配置的连接:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......$ LDAP.- >捆绑$ dn.$密码);

警告

当LDAP服务器允许未经身份绑定的绑定时,空白密码将始终有效。

绑定一旦(或者​​在LDAP服务器上启用了匿名身份验证),您可能会使用的是使用的LDAP服务器询问()方法:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......$查询=$ LDAP.- >询问'dc 欧宝娱乐app下载地址= symfony,dc = com''(&(objectclass = person)(ou =维护者))');$结果=$查询- >执行();Foreach.$结果作为$入场{//用结果做点什么}

默认情况下,LDAP表项才延迟加载。如果您希望在单个呼叫中获取所有条目并使用结果数组进行操作,则可以使用toarray()方法:

欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......$查询=$ LDAP.- >询问'dc 欧宝娱乐app下载地址= symfony,dc = com''(&(objectclass = person)(ou =维护者))');$结果=$查询- >执行()- >Toarray.();//与结果数组做点什么

默认情况下,LDAP查询使用欧宝娱乐app下载地址symfony \ component \ ldap \适配器\ queryInterface :: scope_sub范围,对应于此ldap_scope_subtree.范围ldap_search.功能。你也可以使用范围(与...有关ldap_scope_base.范围ldap_read.) 和范围_one.(与...有关ldap_scope_onelevel.范围ldap_list.):

欧宝娱乐app下载地址symfony \ component \ ldap \适配器\ queryInterface;$查询=$ LDAP.- >询问'dc 欧宝娱乐app下载地址= symfony,dc = com''...'['范围'=>queryInterface.::范围_one.]);

使用筛选仅选项仅检索某些特定属性:

$ query = $ ldap->查询('dc =欧宝娱乐app下载地址 symfony,dc = com','...',['filter'=> ['cn,mail']);

创建或更新条目

LDAP组件提供了创建新的LDAP条目,更新甚至删除现有的方法:

欧宝娱乐app下载地址symfony \ component \ ldap \条目;欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......$入场=新的入口'cn = fabien potencier,d欧宝娱乐app下载地址c = symfony,dc = com'['sn'=>['fabpot'],'ObjectClass'=>['inetorgperson'],]);$ EntryManager.=$ LDAP.- >GetEntryManager.();//创建新条目$ EntryManager.- >添加$入场);//查找和更新现有条目$查询=$ LDAP.- >询问'dc 欧宝娱乐app下载地址= symfony,dc = com''(&(objectclass = person)(ou =维护者))');$结果=$查询- >执行();$入场=$结果[0.];$ phoneNumber.=$入场- >getAttribute.'电话号码');$ iScontractor.=$入场- >有点牵引'承包商组合');// getAttribute()中的属性名称和hasattribute()方法区分大小写//通过FALSE作为第二种方法参数,使其不区分大小写$ iScontractor.=$入场- >有点牵引'承包商组合'错误的);$入场- >setAttribute.'电子邮件'['[电子邮件受保护]']);$ EntryManager.- >更新$入场);//将值添加或删除到多值属性比使用Update()更有效$ EntryManager.- >addattributevalues.$入场'电话号码'['+1.111.222.3333''+1.222.333.4444']);$ EntryManager.- >removeattributevalues.$入场'电话号码'['+1.111.222.3333''+1.222.333.4444']);//删除现有条目$ EntryManager.- >去掉新的入口'cn =测试用户,dc = sy欧宝娱乐app下载地址mfony,dc = com'));

5.3版中的新增功能:使属性名称的选项不区分大小写getAttribute()hasattribute()在Symfony 5.3中介绍。欧宝娱乐app下载地址

批量更新

使用条目经理Applicoperations()一次更新多个属性的方法:

欧宝娱乐app下载地址symfony \ component \ ldap \条目;欧宝娱乐app下载地址symfony \ component \ ldap \ ldap;// ......$入场=新的入口'cn = fabien potencier,d欧宝娱乐app下载地址c = symfony,dc = com'['sn'=>['fabpot'],'ObjectClass'=>['inetorgperson'],]);$ EntryManager.=$ LDAP.- >GetEntryManager.();//一次添加多个电子邮件地址$ EntryManager.- >ampplyoperations.$入场- >getdn.(),[新的更新ldap_modify_batch_add.'邮件''[电子邮件受保护]'),新的更新ldap_modify_batch_add.'邮件''[电子邮件受保护]'),]);

可能的操作类型是ldap_modify_batch_add.ldap_modify_batch_remove.ldap_modify_batch_remove_all.ldap_modify_batch_replace.。范围$价值一定是空值使用时ldap_modify_batch_remove_all.操作类型。

这项工作包括代码样本,是在a下获得的许可Creative Commons by-SA 3.0执照。