Ldap组件

编辑该页面

Ldap组件

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

安装

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

请注意

如果你安装这个组件之外的Symfony应用程序,你必须要求欧宝娱乐app下载地址供应商/ autoload.php文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。

使用

Ldap类提供了方法和查询LDAP服务器进行身份验证。

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

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

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

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

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

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

bind ()方法验证先前配置的连接使用专有名称(DN)和一个用户的密码:

1 2 3 4
使用欧宝娱乐app下载地址\组件\Ldap\Ldap;/ /……美元ldap- >bind (美元dn,美元密码);

谨慎

当LDAP服务器允许未经身份验证的结合,一个空白密码永远是有效的。

一旦绑定(或者如果你启用匿名身份验证您的LDAP服务器上),你可能查询LDAP服务器使用查询()方法:

1 2 3 4 5 6 7 8 9
使用欧宝娱乐app下载地址\组件\Ldap\Ldap;/ /……美元查询=美元ldap- >查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元结果=美元查询- >execute ();foreach(美元结果作为美元条目){/ /做某事的结果}

默认情况下,LDAP条目延迟加载。如果你想在一个调用中获取所有条目和做一些结果的数组,你可以使用toArray ()方法:

1 2 3 4 5 6 7
使用欧宝娱乐app下载地址\组件\Ldap\Ldap;/ /……美元查询=美元ldap- >查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元结果=美元查询- >execute ()- >toArray ();/ /做一些结果数组中

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

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

使用过滤器选择只检索一些特定的属性:

$ = $ ldap查询- >查询(“dc = sy欧宝娱乐app下载地址mfony, dc = com”,“……”,[“过滤器”= > [“cn”, '邮件']);

创建或更新条目

Ldap组件提供意味着创建新的Ldap条目,更新或删除现有的:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34
使用欧宝娱乐app下载地址\组件\Ldap\条目;使用欧宝娱乐app下载地址\组件\Ldap\Ldap;/ /……美元条目=条目(“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”,(“锡”= > [“fabpot”),对象类的= > [“inetOrgPerson”)));美元entryManager=美元ldap- >getEntryManager ();/ /创建一个新条目美元entryManager- >add (美元条目);/ /查找和更新现有条目美元查询=美元ldap- >查询(“dc 欧宝娱乐app下载地址= symfony, dc = com”,’(& (objectclass =人)(ou =维护者))”);美元结果=美元查询- >execute ();美元条目=美元结果(0];美元phoneNumber=美元条目- >getAttribute (“phoneNumber”);美元isContractor=美元条目- >hasAttribute (“contractorCompany”);/ /属性名称在getAttribute()和hasAttribute()方法是区分大小写的/ /错误作为第二种方法参数传递给让他们不区分大小写的美元isContractor=美元条目- >hasAttribute (“contractorCompany”,);美元条目- >setAttribute (“电子邮件”,(“fabpot@欧宝娱乐app下载地址www.oldmanjams.com”]);美元entryManager- >更新(美元条目);/ /添加或删除值一个多值属性比使用更高效的更新()美元entryManager- >addAttributeValues (美元条目,“telephoneNumber”,(' + 1.111.222.3333 ',' + 1.222.333.4444 ']);美元entryManager- >removeAttributeValues (美元条目,“telephoneNumber”,(' + 1.111.222.3333 ',' + 1.222.333.4444 ']);/ /删除一个现有条目美元entryManager- >remove (条目(“cn =测试用户,dc = sy欧宝娱乐app下载地址mfony, dc = com”));

批处理更新

输入管理器的使用applyOperations ()方法来更新多个属性:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址\组件\Ldap\条目;使用欧宝娱乐app下载地址\组件\Ldap\Ldap;/ /……美元条目=条目(“cn =法效力,dc = symfony, d欧宝娱乐app下载地址c = com”,(“锡”= > [“fabpot”),对象类的= > [“inetOrgPerson”)));美元entryManager=美元ldap- >getEntryManager ();/ /添加多个电子邮件地址美元entryManager- >applyOperations (美元条目- >getDn (), (UpdateOperation (LDAP_MODIFY_BATCH_ADD“邮件”,“new1@example.com”),UpdateOperation (LDAP_MODIFY_BATCH_ADD“邮件”,“new2@example.com”)));

可能的操作类型LDAP_MODIFY_BATCH_ADD,LDAP_MODIFY_BATCH_REMOVE,LDAP_MODIFY_BATCH_REMOVE_ALL,LDAP_MODIFY_BATCH_REPLACE。参数美元的价值必须当使用LDAP_MODIFY_BATCH_REMOVE_ALL操作类型。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
欧宝娱乐app下载地址Symfony 6.0支持通过SensioLabs