domisys/ldap-bundle

集成LDAP

安装次数: 1,851

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 11

类型:symfony-bundle

dev-master 2014-02-25 14:26 UTC

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类中找到。