网站设计师对应的专业,南昌网站搭建公司 赣ICP,三门峡网站建设,软件开发主要文档Symfony提供了不同的方法来配合LDAP服务器使用。Security组件提供#xff1a;ldap user provider#xff0c;使用的是form_login_ldap authentication provider#xff0c;用于针对一台使用了表单登录的LDAP服务器。同所有其他user provider一样#xff0c;它可以同任何aut…Symfony提供了不同的方法来配合LDAP服务器使用。Security组件提供ldap user provider使用的是form_login_ldap authentication provider用于针对一台使用了表单登录的LDAP服务器。同所有其他user provider一样它可以同任何authentication provider一起使用。http_basic_ldap authentication provider用于针对一台使用了HTTP Basic的LDAP服务器。同所有其他user provider一样它可以同任何authentication provider一起使用。这意味着在以下场合是可以工作的利用一台LDAP服务器来比对用户密码并取出用户信息。这可以使用LDAP user provider以及LDAP form login或LDAP HTTP basic两个authentication provider中的一种来完成。利用一台LDAP服务器来比对用户密码但从另一个资源处取得用户信息(比如一个使用了FOSUserBundle的数据库)。从一台LDAP服务器取出用户信息同时使用另一种用户验证策略(比如基于token的预验证)。LDAP配置参考 ¶完整的LDAP配置参考 (form_login_ldap, http_basic_ldap, ldap) 请见 SecurityBundle Configuration (security)。其中一些更有意思的选项在此进行解释。配置LDAP客户端 ¶所有架构都需要LDAP客户端被预先配置好。providers被配置为使用一个名为 ldap 的服务但你也可以在security组件的配置信息中覆写此项设置。使用下列配置一个LDAP客户端可以被简单地配置12345678910# app/config/services.ymlservices:ldap:class:Symfony\Component\Ldap\LdapClientarguments: - my-server # host- 389 # port- 3 # version- false # SSL- true # TLS12345678910111213141516xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsdmy-server3893falsetrue12345678910111213// app/config/services.phpuse Symfony\Component\Ldap\LdapClient;use Symfony\Component\DependencyInjection\Definition;$container-setDefinition(ldap, new Definition(LdapClient::class, array(my-server,389,3,false,true,));利用LDAP User Provider取出用户 ¶如果你想从一台LDAP服务器中取出用户信息你就需要使用 ldap user provider了12345678910111213# app/config/security.ymlsecurity: # ...providers:my_ldap:ldap:service:ldapbase_dn:dcexample,dccomsearch_dn:cnread-only-admin,dcexample,dccomsearch_password:passworddefault_roles:ROLE_USERuid_key:uid123456789101112131415161718192021xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:srvhttp://symfony.com/schema/dic/servicesxsi:schemaLocationhttp://symfony.com/schema/dic/serviceshttp://symfony.com/schema/dic/services/services-1.0.xsdserviceldapbase-dndcexample,dccomsearch-dncnread-only-admin,dcexample,dccomsearch-passwordpassworddefault-rolesROLE_USERuid-keyuid/1234567891011121314$container-loadFromExtension(security, array(providers array(ldap_users array(ldap array(service ldap,base_dn dcexample,dccom,search_dn cnread-only-admin,dcexample,dccom,search_password password,default_roles ROLE_USER,uid_key uid,),),),);ldap user provider支持多种不同的配置选项:service ¶值类型: string 默认值: ldap这是你所配置的LDAP客户端的名字。你可以随便选择名称但必须是程序中的唯一并且不允许以数字或空格开头。base_dn ¶值类型: string 默认值: null这是目录的base DN。search_dn ¶值类型: string 默认值: null这是你的只读用户的DN用于对LDAP服务器进行认证以便取出用户信息。search_password ¶值类型: string 默认值: null这是你的只读用户的密码用于对LDAP服务器进行认证以便取出用户信息。default_roles ¶值类型: array 默认值: []这是你希望分配给“从LDAP服务器取出的用户”之默认role。如果你不配置此键用户不会有任何role并不被当作“完全认证”(fully authenticated)的用户。uid_key ¶值类型: string 默认值: sAMAccountName这是入口点(entry)的key用作其uid。取决于你的LDAP服务器之具体落实(implementation)。常用值是sAMAccountNameuserPrincipalNameuidfilter ¶值类型: string 默认值: ({uid_key}{username})这个键让你配置哪个LDAP查询将被使用。{uid_key} 字符串将被 uid_key 配置值所替换 (默认时 sAMAccountName) 和 {username} 字符串将被你“正在尝试加载的用户名”给替换。例如带有一个 uid 值的 uid_key如果你尝试加载 fabpot 用户最终的字符串将会是: (uidfabpot)。当然用户名会被转义为的是防止 LDAP injection。filter 选项键的语法被 RFC4515 所定义。针对LDAP服务器进行身份认证 ¶针对LDAP服务器进行身份认证可以藉由使用form login或是HTTP Basic两个authentication providers来完成。除了两个选项键之外它们和“非LDAP”情况下的配置完全一样service ¶值类型: string 默认值: ldap这是你所配置的LDAP客户端的名字。你可以随便选择名称但必须是程序中的唯一并且不允许以数字或空格开头。dn_string ¶值类型: string 默认值: {username}这个键定义了“用于从用户名中组成用户的DN的字符串”的格式。{username} 字符串将被正在认证的人的真实用户名所替换。例如如果你的用户拥有 uideinstein,dcexample,dccom 这样一个DN字符串那么 dn_string 将会是 uid{username},dcexample,dccom。下面给出了 form_login_ldap 和 http_basic_ldap 的配置示例。表单登陆之配置示例 ¶12345678910111213# app/config/security.ymlsecurity: # ...firewalls:main: # ...form_login_ldap:login_path:logincheck_path:login_check# ...service:ldapdn_string:uid{username},dcexample,dccom123456789101112131415161718xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:srvhttp://symfony.com/schema/dic/servicesxsi:schemaLocationhttp://symfony.com/schema/dic/serviceshttp://symfony.com/schema/dic/services/services-1.0.xsdlogin-pathlogincheck-pathlogin_checkserviceldapdn-stringuid{username},dcexample,dccom /12345678910111213$container-loadFromExtension(security, array(firewalls array(main array(form_login_ldap array(login_path login,check_path login_check,service ldap,dn_string uid{username},dcexample,dccom,// ...),),));HTTP Basic登录之配置示例 ¶1234567891011# app/config/security.ymlsecurity: # ...firewalls:main: # ...http_basic_ldap: # ...service:ldapdn_string:uid{username},dcexample,dccom1234567891011121314xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:srvhttp://symfony.com/schema/dic/servicesxsi:schemaLocationhttp://symfony.com/schema/dic/serviceshttp://symfony.com/schema/dic/services/services-1.0.xsd123456789101112$container-loadFromExtension(security, array(firewalls array(main array(http_basic_ldap array(service ldap,dn_string uid{username},dcexample,dccom,// ...),stateless true,),),);