针对LDAP服务器进行身份验证

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

针对LDAP服务器进行身份验证

ob娱乐下载Symfony提供了不同的方法使用LDAP服务器。

安全组件提供了:

  • ldap用户提供者使用LdapUserProvider类。像所有其他用户提供者,它可以用于任何身份验证提供者。
  • form_login_ldap身份验证提供者,对LDAP服务器进行身份验证使用登录表单。像所有其他身份验证提供者,它可以用于任何用户提供者。
  • http_basic_ldap身份验证提供者,对LDAP服务器使用HTTP基本身份验证。像所有其他身份验证提供者,它可以用于任何用户提供者。

这意味着,下面的场景将工作:

  • 检查用户的密码和获取用户信息对LDAP服务器。这可以通过使用LDAP用户提供者和LDAP登录形式或LDAP HTTP基本身份验证提供者。
  • 检查用户的密码对LDAP服务器,获取用户信息从另一个来源(例如,数据库使用FOSUserBundle)。
  • 从LDAP服务器加载用户信息,而使用另一个身份验证策略(例如,基于符号的pre-authentication)。

Ldap配置参考

看到安全配置引用(SecurityBundle)完整的LDAP配置引用(form_login_ldap,http_basic_ldap,ldap)。一些更有趣的选项如下所示。

配置LDAP客户端

实际上所有机制之前需要一个LDAP客户端进行配置。提供者配置为使用一个默认的服务命名ldap,但你可以覆盖该设置在安全组件的配置。

LDAP客户端可以简单的配置,使用以下服务定义:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
# app / config / services.yml服务:ldap:类:ob娱乐下载Symfony \ \ Ldap \ LdapClient组件参数:- - - - - -我的服务器#主机- - - - - -389年#端口- - - - - -3#版本- - - - - -# SSL- - - - - -真正的# TLS

获取用户使用LDAP用户提供者

如果你想从LDAP服务器获取用户信息,您可能想要使用ldap用户提供者。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13
# app / config / security.yml安全:#……提供者:my_ldap:ldap:服务:ldapbase_dn:dc =示例中,dc = comsearch_dn:“cn = read-only-admin, dc =示例中,dc = com”search_password:密码default_roles:ROLE_USERuid_key:uid

谨慎

安全组件逃当LDAP用户提供输入数据提供者使用。然而,LDAP组件本身不提供任何逃离。因此,这是你的责任,以防止LDAP注入攻击时直接使用组件。

谨慎

上面的用户配置在用户提供者仅用于检索数据。这是一个静态用户定义的用户名和密码(提高安全性,定义密码作为一个环境变量)。

如果您的LDAP服务器允许匿名检索信息,您可以设置search_dnsearch_password选项

ldap用户提供者支持许多不同的配置选项:

服务

类型:字符串默认的:ldap

这是您的LDAP客户端配置的名称。你可以自由选择名称,但它在应用程序中必须是唯一的,不能以数字或包含空格。

base_dn

类型:字符串默认的:

这是目录的基本DN

search_dn

类型:字符串默认的:

这是你只读用户的DN,它将被用来验证对LDAP服务器以获取用户的信息。

search_password

类型:字符串默认的:

这是你只读用户的密码,这将被用来验证对LDAP服务器以获取用户的信息。

default_roles

类型:数组默认的:[]

这是默认的角色你想给一个用户从LDAP服务器获取。如果你没有配置这个关键,你的用户不会有任何角色,将不被视为充分验证。

uid_key

类型:字符串默认的:sAMAccountName

这个条目的关键是使用UID。取决于您的LDAP服务器的实现。常用的值是:

  • sAMAccountName
  • userPrincipalName
  • uid

过滤器

类型:字符串默认的:({uid_key} = {username})

这个键允许您配置LDAP查询将被使用。的{uid_key}字符串的值将被取代uid_key配置值(默认情况下,sAMAccountName),{username}字符串将被用户名你试图取代负载。

例如,用一个uid_keyuid,如果你正试图加载用户fabpot最后的字符串将:(uid = fabpot)

当然,用户名会逃,为了防止LDAP注入

的语法过滤器关键是定义为RFC4515

针对LDAP服务器进行身份验证

针对LDAP服务器进行身份验证可以通过使用表单登录或HTTP基本身份验证提供者。

他们配置完全非ldap同行,外加两个配置密钥:

服务

类型:字符串默认的:ldap

这是您的LDAP客户端配置的名称。你可以自由选择名称,但它在应用程序中必须是唯一的,不能以数字或包含空格。

dn_string

类型:字符串默认的:{username}

这个关键的定义中使用的字符串的形式组成用户的DN,从用户名。的{username}字符串替换为实际的用户名的人试图验证。

例如,如果您的用户DN字符串形式uid =爱因斯坦,dc =示例中,dc = com,那么dn_stringuid = {username}, dc =示例中,dc = com

以下的例子是,对form_login_ldaphttp_basic_ldap

配置示例表单登录

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13
# app / config / security.yml安全:#……防火墙:主要:#……form_login_ldap:login_path:登录check_path:login_check#……服务:ldapdn_string:“uid = {username}, dc =例子,dc = com”

配置HTTP基本的示例

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11
# app / config / security.yml安全:#……防火墙:主要:#……http_basic_ldap:#……服务:ldapdn_string:“uid = {username}, dc =例子,dc = com”
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。