Ldap组件

5.2版本
维护 没有维护的

Ldap组件

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

安装

1
美元作曲家需要symfony / ld欧宝娱乐app下载地址ap

请注意

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

使用

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

Ldap类使用一个欧宝娱乐app下载地址Symfony适配器组件\ \ Ldap \ \ AdapterInterface与LDAP服务器通信。的适配器例如,对于PHP内置的LDAP扩展,可以使用以下选项进行配置:

宿主
LDAP服务器的IP或主机名
港口
访问LDAP服务器的端口
版本
使用的LDAP协议版本
加密
加密协议:ssl,tls没有一个(默认)
connection_string
您可以使用此选项代替宿主港口连接LDAP服务器
optReferrals
指定是否自动跟随LDAP服务器返回的引用
选项
中定义的LDAP服务器选项ConnectionOptions

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

使用欧宝娱乐app下载地址Symfony \组件\ Ldap \ Ldap;ldap美元=Ldap::创建(“ext_ldap”,(“主机”= >我的服务器的,“加密”= >“ssl”,]);

或者你可以直接指定一个连接字符串:

使用欧宝娱乐app下载地址Symfony \组件\ Ldap \ Ldap;ldap美元=Ldap::创建(“ext_ldap”,(“connection_string”= >“ldap: / /我的服务器:636”]);

bind ()方法使用用户的区分名(DN)和密码验证先前配置的连接:

使用欧宝娱乐app下载地址Symfony \组件\ Ldap \ Ldap;/ /……ldap美元->绑定($ dn,美元的密码);

谨慎

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

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

使用欧宝娱乐app下载地址Symfony \组件\ Ldap \ Ldap;/ /……美元的查询=ldap美元->查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元的结果=美元的查询->执行();foreach(美元的结果作为美元的条目){//对结果做点什么}

缺省情况下,LDAP条目是惰性加载的。如果您希望在一个调用中获取所有条目,并对结果数组做一些事情,您可以使用toArray ()方法:

使用欧宝娱乐app下载地址Symfony \组件\ Ldap \ Ldap;/ /……美元的查询=ldap美元->查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元的结果=美元的查询->执行()->toArray();//对结果数组做点什么

默认情况下,LDAP查询使用欧宝娱乐app下载地址Symfony \适配器组件\ Ldap \ \ QueryInterface:: SCOPE_SUB作用域,对应于LDAP_SCOPE_SUBTREE的范围ldap_search函数。你也可以使用SCOPE_BASE(相关LDAP_SCOPE_BASE的范围ldap_read),SCOPE_ONE(相关LDAP_SCOPE_ONELEVEL的范围ldap_list):

使用欧宝娱乐app下载地址Symfony适配器组件\ \ Ldap \ \ QueryInterface;美元的查询=ldap美元->查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”,“……”,(“范围”= >QueryInterface::SCOPE_ONE]);

使用过滤器选项仅检索一些特定属性:

$ = $ ldap查询- >查询(dc = sym欧宝娱乐app下载地址fony, dc = com ’, ‘...’, [‘ 过滤器' = > [' cn、邮件']);

创建或更新条目

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

使用欧宝娱乐app下载地址Symfony \ Ldap \ \组件条目;使用欧宝娱乐app下载地址Symfony \组件\ Ldap \ Ldap;/ /……美元的条目=条目(“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”,(“锡”= >(“fabpot”),对象类的= >(“inetOrgPerson”),]);entryManager美元=ldap美元->getEntryManager();//创建新条目entryManager美元->添加(美元的条目);//查找并更新现有条目美元的查询=ldap美元->查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元的结果=美元的查询->执行();美元的条目=美元的结果(0];phoneNumber美元=美元的条目->getAttribute(“phoneNumber”);isContractor美元=美元的条目->hasAttribute(“contractorCompany”);美元的条目->setAttribute(“电子邮件”,((电子邮件保护)]);entryManager美元->更新(美元的条目);//在多值属性中添加或删除值比使用update()更有效entryManager美元->addAttributeValues(美元的条目,“telephoneNumber”,(' + 1.111.222.3333 ',' + 1.222.333.4444 ']);entryManager美元->removeAttributeValues(美元的条目,“telephoneNumber”,(' + 1.111.222.3333 ',' + 1.222.333.4444 ']);//删除已存在的条目entryManager美元->删除(条目(“cn =测试用户,dc = sy欧宝娱乐app下载地址mfony, dc = com”));

批处理更新

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

使用欧宝娱乐app下载地址Symfony \ Ldap \ \组件条目;使用欧宝娱乐app下载地址Symfony \组件\ Ldap \ Ldap;/ /……美元的条目=条目(“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”,(“锡”= >(“fabpot”),对象类的= >(“inetOrgPerson”),]);entryManager美元=ldap美元->getEntryManager();//一次添加多个电子邮件地址entryManager美元->applyOperations(美元的条目->getDn(),(UpdateOperation(LDAP_MODIFY_BATCH_ADD,“邮件”,(电子邮件保护)),UpdateOperation(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操作类型。

这项工作,包括代码样本,是在一个创作共用BY-SA 3.0许可证。