domisys / ldap-bundle
集成LDAP
Requires
- php: >=5.3.0
- symfony/framework-bundle: ~2.1
This package is not auto-updated.
Last update: 2024-09-14 14:55:44 UTC
README
此包实现了Symfony2的Security组件的基于LDAP的用户提供者。
当与Symfony2的HTTP基本认证监听器一起使用时,此包可以验证用户名是否与LDAP服务器匹配,并基于LDAP用户所属的组填充角色。
安装
依赖关系
此包依赖于Zend Framework 2 LDAP客户端。
如果您在Symfony2应用程序的vendor路径中还没有可用的ZF2代码库,您可能对使用git-subtree单独拉取LDAP客户端感兴趣。有关此过程的说明,请参阅symfony-devs邮件列表中的此线程。
子模块创建
将LdapBundle添加到您的src/
目录
$ git submodule add https://github.com/opensky/LdapBundle.git vendor/bundles/OpenSky/Bundle/LdapBundle
类自动加载
如果src/
目录已经通过registerNamespaceFallback()
配置在您的项目autoload.php
中,则不需要进行任何更改。否则,请定义回退目录或显式添加“OpenSky”命名空间
# app/autoload.php
$loader->registerNamespaces(array(
'OpenSky' => __DIR__.'/../vendor/bundles',
));
此外,请确保已配置“Zend”命名空间以进行自动加载。
应用程序内核
将LdapBundle添加到您的应用程序内核的registerBundles()
方法
public function registerBundles()
{
return array(
new OpenSky\Bundle\LdapBundle\OpenSkyLdapBundle(),
);
}
配置
LdapBundle扩展
LDAP用户提供者可以配置如下
# app/config/config.yml
opensky_ldap:
client:
host: ldap.example.com
user_base_dn: ou=Users,dc=example,dc=com
user_filter: (objectClass=employee)
username_attribute: uid
role_base_dn: ou=Groups,dc=example,dc=com
role_filter: (objectClass=role)
role_name_attribute: cn
role_user_attribute: memberuid
security:
role_prefix: ROLE_LDAP_
default_roles: [ROLE_ADMIN, ROLE_LDAP]
以下设置的解释如下
client
:ZF2 LDAP客户端的选项数组。可以指定任何选项,尽管主机可能是一个最小要求。user_base_dn
:搜索用户时使用的LDAP的基数DN。user_filter
:在LDAP中搜索用户时要应用的过滤器。username_attribute
:用作用户名的用户条目属性。role_base_dn
:在LDAP中搜索角色时使用的基数DN。role_filter
:在LDAP中搜索角色时要应用的过滤器。role_name_attribute
:用作角色名的角色条目属性。role_user_attribute
:用作推断用户关系的角色条目属性。其值应是一组用户标识符,它们对应于用户条目的usernameAttribute
值。security.role_prefix
:在将LDAP条目中的角色名称转换为安全角色时应用的词缀。请参阅:从LDAP组推导Symfony2角色security.default_roles
:在从用户/角色条目关系推断角色之前,分配给所有LDAP用户的默认角色数组。
另请参阅
安全组件
此包目前打算与Apache的mod_auth_ldap一起使用。因此,它必须配置为与PreAuthenticatedAuthenticationProvider一起运行。包括HTTP基本认证的预认证提供程序,并可以按以下方式配置
# app/config/security.yml
security.config:
providers:
ldap:
id: opensky_ldap.user_provider
firewalls:
backend:
provider: ldap
pattern: /admin(/.*)?
http_basic_pre_auth: true
stateless: true
factories:
- %kernel.root_dir%/../vendor/bundles/OpenSky/Bundle/LdapBundle/Resources/config/security_factories.xml
注意:此包的未来增强将是一个UserAuthenticationProvider,允许对LDAP服务器进行身份验证,这将消除对mod_auth_ldap进行预认证的需求。
另请参阅
LdapUser对象
由LDAP UserProvider提供的用户将是LdapUser的实例,它是Symfony2的UserInterface的轻量级实现。该用户对象仅存储用户名和角色数组。
从LDAP组派生Symfony2角色
LdapBundle将尝试根据组条目中的一个属性创建Symfony2安全角色。默认情况下,将使用组的通用名称("cn")。
一般来说,组的名称将被转换为缩写(使用下划线),转换为大写并添加一个可配置的字符串(默认为"ROLE_LDAP_")。例如,如果您的用户存在于名为"Admin"的LDAP组中,提供的LdapUser对象将具有"ROLE_LDAP_ADMIN"角色。完整实现可以在LdapUserProvider类中找到。