针对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_dn
和search_password
选项零
。
的ldap
用户提供者支持许多不同的配置选项:
uid_key
类型:字符串
默认的:sAMAccountName
这个条目的关键是使用UID。取决于您的LDAP服务器的实现。常用的值是:
sAMAccountName
userPrincipalName
uid
针对LDAP服务器进行身份验证
针对LDAP服务器进行身份验证可以通过使用表单登录或HTTP基本身份验证提供者。
他们配置完全非ldap同行,外加两个配置密钥:
dn_string
类型:字符串
默认的:{username}
这个关键的定义中使用的字符串的形式组成用户的DN,从用户名。的{username}
字符串替换为实际的用户名的人试图验证。
例如,如果您的用户DN字符串形式uid =爱因斯坦,dc =示例中,dc = com
,那么dn_string
将uid = {username}, dc =示例中,dc = com
。
以下的例子是,对form_login_ldap
和http_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”