opensky/ldap-bundle

集成了LDAP

安装: 32

依赖: 0

建议者: 0

安全性: 0

星星: 55

关注者: 16

分支: 11

开放问题: 11

类型:symfony-bundle

v1.0.0 2017-11-29 18: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类中找到。