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

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.0,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

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

欧宝娱乐app下载地址Symfony提供了使用LDAP服务器的不同方法。

安全组件提供:

  • ldap用户提供程序,使用LdapUserProvider类。与所有其他用户提供程序一样,它可以与任何身份验证提供程序一起使用。
  • form_login_ldap身份验证提供程序,用于使用登录表单对LDAP服务器进行身份验证。与所有其他身份验证提供程序一样,它可以与任何用户提供程序一起使用。
  • http_basic_ldap身份验证提供程序,用于使用HTTP Basic对LDAP服务器进行身份验证。与所有其他身份验证提供程序一样,它可以与任何用户提供程序一起使用。

这意味着以下场景将起作用:

  • 在LDAP服务器上检查用户密码并获取用户信息。这可以使用LDAP用户提供程序和LDAP表单登录或LDAP HTTP基本身份验证提供程序来完成。
  • 在从另一个源(例如,使用FOSUserBundle的数据库)获取用户信息时,根据LDAP服务器检查用户密码。
  • 从LDAP服务器加载用户信息,同时使用另一种身份验证策略(例如,基于令牌的预身份验证)。

Ldap配置参考

看到SecurityBundle配置("security")参阅完整的LDAP配置参考(form_login_ldaphttp_basic_ldapldap).下面将介绍一些更有趣的选项。

配置LDAP客户端

所有机制实际上都需要事先配置好的LDAP客户端。提供程序被配置为使用一个名为ldap,但您可以在安全组件的配置中覆盖此设置。

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

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

使用LDAP用户提供程序获取用户

如果希望从LDAP服务器获取用户信息,可能需要使用ldap用户提供者。

  • YAML
  • XML
  • PHP
12 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客户端的名称。您可以自由选择名称,但该名称在应用程序中必须唯一,且不能以数字开头或包含空格。

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服务器进行身份验证

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

它们的配置与非ldap对应的配置完全相同,只是增加了两个配置键:

服务

类型字符串默认的ldap

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

dn_string

类型字符串默认的{username}

这个键定义了字符串的形式,用于从用户名组成用户DN。的{username}字符串将被试图进行身份验证的人的实际用户名替换。

例如,如果您的用户在表单中有DN字符串uid =爱因斯坦,dc =示例中,dc = com,则dn_stringuid = {username}, dc =示例中,dc = com

下面提供了这两种方法的示例form_login_ldap而且http_basic_ldap

表单登录的配置示例

  • YAML
  • XML
  • PHP
12 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 Basic配置举例

  • 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”
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。