opensky / ldap-bundle
集成了LDAP
Requires
- php: >=7.0
- symfony/framework-bundle: ~3.0
- symfony/security-bundle: ~3.0
- zendframework/zend-ldap: ~2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.0
- phpunit/phpunit: ~6.0
This package is not auto-updated.
Last update: 2024-09-24 04:30:20 UTC
README
此包实现了基于LDAP的用户提供程序,用于Symfony2的安全组件。
当与Symfony2的HTTP基本认证监听器一起使用时,此包可以验证用户名是否与LDAP服务器上的用户名匹配,并根据LDAP用户所属的组填充角色。
安装
依赖
此包依赖于Zend Framework 2 LDAP客户端。
如果您还没有在Symfony2应用的供应商路径中提供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用户提供程序提供的用户将是LdapUser的实例,它是Symfony2的UserInterface的一个轻量级实现。此用户对象仅存储用户名和角色数组。
从LDAP组中提取Symfony2角色
LdapBundle将尝试根据组条目的属性创建Symfony2安全角色。默认情况下,将使用组的通用名称("cn")。
一般来说,组的名称将被转换为小写(使用下划线分隔),转换为大写,并添加一个可配置的前缀字符串(默认为"ROLE_LDAP_")。例如,如果您的用户在名为"Admin"的LDAP组中存在,提供的LdapUser对象将具有"ROLE_LDAP_ADMIN"角色。完整实现可以在LdapUserProvider类中找到。