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_ALL
那LDAP_MODIFY_BATCH_REPLACE
。范围$价值
一定是空值
使用时LDAP_MODIFY_BATCH_REMOVE_ALL
操作类型。
该工作,包括代码示例,根据aCreative Commons by-SA 3.0执照。