LDAP组件

LDAP组件

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

安装

1
$作曲家需要Symfony / LDob娱乐下载AP

笔记

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

用法

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

Ldap类使用一个ob娱乐下载Symfony \ Component \ LDAP \ Adapter \ AdapterInterface与LDAP服务器进行通信。这适配器例如,对于PHP的内置LDAP扩展,可以使用以下选项配置:

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

例如,连接start-TLS安全的LDAP服务器:

ob娱乐下载symfony \ component \ ldap \ ldap;ldap美元=Ldap::创建'ext_ldap'[“主机”= >'我的服务器'“加密”= >'ssl']);

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

ob娱乐下载symfony \ component \ ldap \ ldap;ldap美元=Ldap::创建'ext_ldap'[“connection_string”= >“ldap: / /我的服务器:636”]);

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

ob娱乐下载symfony \ component \ ldap \ ldap;// ......ldap美元- >捆绑$ dn$密码);

警告

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

绑定之后(或者如果您在LDAP服务器上启用了匿名身份验证),您可以使用询问()方法:

ob娱乐下载symfony \ component \ ldap \ ldap;// ......$查询=ldap美元- >询问'dc ob娱乐下载= symfony,dc = com'’(& (objectclass =人)(ou =维护者))”);$结果=$查询- >执行();Foreach.$结果作为$入场{//用结果做点什么}

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

ob娱乐下载symfony \ component \ ldap \ ldap;// ......$查询=ldap美元- >询问'dc ob娱乐下载= symfony,dc = com'’(& (objectclass =人)(ou =维护者))”);$结果=$查询- >执行()- >Toarray.();//与结果数组做点什么

默认情况下,LDAP查询使用ob娱乐下载Symfony \适配器组件\ Ldap \ \ QueryInterface:: SCOPE_SUB范围,对应于此ldap_scope_subtree.的范围ldap_search.功能。你也可以使用范围(与...有关LDAP_SCOPE_BASE范围ldap_read),范围_one.(与...有关ldap_scope_onelevel.范围ldap_list.):

ob娱乐下载symfony \ component \ ldap \适配器\ queryInterface;$查询=ldap美元- >询问'dc ob娱乐下载= symfony,dc = com''...'[“范围”= >queryInterface.::范围_one.]);

创建或更新条目

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

ob娱乐下载symfony \ component \ ldap \条目;ob娱乐下载symfony \ component \ ldap \ ldap;// ......$入场=新的入口“cn =法效力,dc = symfony, dob娱乐下载c = com”[“锡”= >[“fabpot”),'ObjectClass'= >[“inetOrgPerson”),]);$ EntryManager.=ldap美元- >getEntryManager();//创建一个新条目$ EntryManager.- >添加$入场);//查找和更新现有条目$查询=ldap美元- >询问'dc ob娱乐下载= symfony,dc = com'’(& (objectclass =人)(ou =维护者))”);$结果=$查询- >执行();$入场=$结果[0.];$ phoneNumber.=$入场- >getAttribute“phoneNumber”);$ 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 = syob娱乐下载mfony,dc = com'));

批量更新

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

ob娱乐下载symfony \ component \ ldap \条目;ob娱乐下载symfony \ component \ ldap \ ldap;// ......$入场=新的入口“cn =法效力,dc = symfony, dob娱乐下载c = com”[“锡”= >[“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_ALLLDAP_MODIFY_BATCH_REPLACE。范围$价值一定是空值使用时LDAP_MODIFY_BATCH_REMOVE_ALL操作类型。

该工作,包括代码示例,根据aCreative Commons by-SA 3.0执照。