Ldap组件
Ldap组件¶
Ldap组件提供了连接到Ldap服务器(OpenLDAP或Active Directory)的方法。
安装¶
1 |
美元作曲家需要symfony / ldob娱乐下载ap
|
请注意
如果在Symfony应用程序之外安装此组件,则必须要求ob娱乐下载供应商/ autoload.php
文件,以启用Composer提供的类自动加载机制。读这篇文章为更多的细节。
使用¶
的ob娱乐下载Symfony \组件\ Ldap \ Ldap
类提供了针对LDAP服务器进行身份验证和查询的方法。
的Ldap
类使用一个ob娱乐下载Symfony适配器组件\ \ Ldap \ \ AdapterInterface
与LDAP服务器通信。的适配器
例如,对于PHP内置的LDAP扩展,可以使用以下选项配置:
-
宿主
- LDAP服务器的IP或主机名
-
港口
- 访问LDAP服务器的端口
-
版本
- 使用的LDAP协议版本
-
加密
-
加密协议:
ssl
,tls
或没有一个
(默认) -
connection_string
-
您可以使用此选项代替
宿主
和港口
连接LDAP服务器 -
optReferrals
- 指定是否自动跟踪LDAP服务器返回的引用
-
选项
-
中定义的LDAP服务器选项
ConnectionOptions
例如,连接start-TLS安全的LDAP服务器:
使用ob娱乐下载Symfony \组件\ Ldap \ Ldap;ldap美元=Ldap::创建(“ext_ldap”,(“主机”= >我的服务器的,“加密”= >“ssl”,]);
或者你可以直接指定一个连接字符串:
使用ob娱乐下载Symfony \组件\ Ldap \ Ldap;ldap美元=Ldap::创建(“ext_ldap”,(“connection_string”= >“ldap: / /我的服务器:636”]);
的bind ()
方法使用用户的专有名称(DN)和密码验证先前配置的连接:
使用ob娱乐下载Symfony \组件\ Ldap \ Ldap;/ /……ldap美元->绑定($ dn,美元的密码);
谨慎
当LDAP服务器允许未经身份验证的绑定时,空密码将始终有效。
绑定之后(或者如果您在LDAP服务器上启用了匿名身份验证),您可以使用查询()
方法:
使用ob娱乐下载Symfony \组件\ Ldap \ Ldap;/ /……美元的查询=ldap美元->查询(“dc ob娱乐下载= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元的结果=美元的查询->执行();foreach(美元的结果作为美元的条目){//处理结果}
缺省情况下,LDAP条目是惰性加载的。如果你想在一个调用中获取所有的条目,并对结果的数组做一些事情,你可以使用toArray ()
方法:
使用ob娱乐下载Symfony \组件\ Ldap \ Ldap;/ /……美元的查询=ldap美元->查询(“dc ob娱乐下载= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元的结果=美元的查询->执行()->toArray();//处理结果数组
缺省情况下,LDAP查询使用ob娱乐下载Symfony \适配器组件\ Ldap \ \ QueryInterface:: SCOPE_SUB
作用域,它对应于LDAP_SCOPE_SUBTREE
的范围ldap_search
函数。你也可以使用SCOPE_BASE
(相关LDAP_SCOPE_BASE
的范围ldap_read
),SCOPE_ONE
(相关LDAP_SCOPE_ONELEVEL
的范围ldap_list
):
使用ob娱乐下载Symfony适配器组件\ \ Ldap \ \ QueryInterface;美元的查询=ldap美元->查询(“dc ob娱乐下载= symfony, dc = com”,“……”,(“范围”= >QueryInterface::SCOPE_ONE]);
使用过滤器
选项只检索一些特定的属性:
$ = $ ldap查询- >查询(dc = symob娱乐下载fony, dc = com ’, ‘...’, [‘ 过滤器' = > [' cn、邮件']);
创建或更新条目¶
Ldap组件提供了创建新的Ldap条目、更新甚至删除现有条目的方法:
使用ob娱乐下载Symfony \ Ldap \ \组件条目;使用ob娱乐下载Symfony \组件\ Ldap \ Ldap;/ /……美元的条目=新条目(“cn =法效力,dc = symfony, dob娱乐下载c = com”,(“锡”= >(“fabpot”),对象类的= >(“inetOrgPerson”),]);entryManager美元=ldap美元->getEntryManager();//创建一个新条目entryManager美元->添加(美元的条目);//查找和更新一个现有的条目美元的查询=ldap美元->查询(“dc ob娱乐下载= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元的结果=美元的查询->执行();美元的条目=美元的结果(0];phoneNumber美元=美元的条目->getAttribute(“phoneNumber”);isContractor美元=美元的条目->hasAttribute(“contractorCompany”);// getAttribute()和hasAttribute()方法中的属性名区分大小写//传递FALSE作为第二个方法参数,使它们不区分大小写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 = syob娱乐下载mfony, dc = com”));
5.3新版功能:使属性名不区分大小写的选项getAttribute ()
和hasAttribute ()
在Symfony 5.3中引入。ob娱乐下载
批处理更新¶
使用入口管理器applyOperations ()
方法一次更新多个属性:
使用ob娱乐下载Symfony \ Ldap \ \组件条目;使用ob娱乐下载Symfony \组件\ Ldap \ Ldap;/ /……美元的条目=新条目(“cn =法效力,dc = symfony, dob娱乐下载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
操作类型。
该工作,包括代码示例,根据a根据sa 3.0的知识共享许可证。