yunai39/simple-ldap-bundle

此包的最新版本(2.2.3)没有提供许可信息。

此包提供了Symfony Security与LDAP通讯录的集成,LDAP通讯录中的每个用户都会有一个默认角色,但也可以为特定用户设置特定角色。

2.2.3 2017-02-08 08:36 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:45:09 UTC


README

这是一个用于Symfony的Ldap身份验证的Bundle。

在此Bundle中,您将能够通过LDAP通讯录对用户进行身份验证。默认情况下,LDAP通讯录中的每个用户都会有一个默认角色(您可以选择的角色)。也可以为特定用户分配特定角色。

数据库很简单,您有一个数据库,其中包含对应于ldap树中字段的id(该字段的名称在参数.yml中定义,例如:employeenumber - 00000),您将为具有员工编号00000的用户分配特定角色。您还有一个布尔字段用于用户未验证,未验证的用户将具有在参数.yml中定义的默认角色。

需求

要使用此Bundle,您需要在您的服务器上安装php_ldap。

安装

您需要将包添加到您的依赖列表中。

"yunai39/simple-ldap-bundle": "dev-master"

执行composer update时

composer update "yunai39/simple-ldap-bundle"

您需要将Bundle启用到您的kernel中。

//app/AppKernel.php
new Yunai39\Bundle\SimpleLdapBundle\SimpleLdapBundle(),

配置

配置相对较长。

首先您需要在AppKernel中注册Bundle。

$bundles = array(
...
new Yunai39\Bundle\SimpleLdapBundle\SimpleLdapBundle(),
...
};

您需要配置您的特定信息,将这些信息放入app/config/config.yml中。

    simple_ldap:
        settings:
            server: ip.to.server.ldap
            port: 389 or 636
            account_suffix : employeeNumber 
            base_dn :
                base1: OU=people,DC=company
                base2: OU=contractors,OU=people,DC=company

        # The attribut you want your user Class to have
        settings_user:
            FullName: cn
        # The redirection after login based on the ROLE
        user_redirects: 
          ROLE_USER: user_home
          ROLE_ADMIN: admin_home
        # Name of the user class
        user_class: Acme\DemoBundle\Security\User\CustomLdapUser
        #if the user is not registered in that database or is not registered as valid in the database he will have the default role
        default_role: ROLE_USER

您还需要创建一个继承自Bundle中定义的UserLdap的用户类(仅当您想从ldap获取特定属性,如email或fullname时使用)。

    <?php
    
    namespace Acme\DemoBundle\Security\User;
    
    use Symfony\Component\Security\Core\User\UserInterface;
    use Yunai39\Bundle\SimpleLdapBundle\Security\User\UserLdap;
    class CustomLdapUser extends  UserLdap
    {
    /* displayname*/
        private $fullname;
    
        public function getFullName(){
            return $this->fullname;
        }
    
        public function setFullName($fullname){
            $this->fullname = $fullname; 
        }
    }

如果您不希望用户有来自LDAP的email或任何其他字段,您不需要重新创建新的用户类,您可以直接使用Bundle中的userldap。

在config.yml中这样定义用户类

    user_class: Yunai39\Bundle\SimpleLdapBundle\Security\User\UserLdap

安全参数(仅适用于Bundle,其余的由您决定)

security:
    encoders:
        Acme\DemoBundle\Security\User\CustomLdapUser : plaintext #Active directory does not support encrypted password yet
providers:
    my_active_directory_provider:
          id: security_ldap_provider

您还需要在firewall中添加以下配置键来引用提供者

ldap: true

示例

    firewalls:
        ldap:
            pattern:  ^/
            provider: my_active_directory_provider
            anonymous: ~
            form_login:
                login_path: login
                check_path: login_check
            logout:
                path:   /logout
                target: login
            ldap: true

添加管理路由(确保它们在防火墙下)

    user_role:
        resource: "@SimpleLdapBundle/Resources/config/routing.yml"
        prefix:   /admin

如果您没有登录、登出和登录检查的角色

login:
    pattern:  /login
    defaults: { _controller: "SimpleLdapBundle:Security:login" }

login_check:
    pattern:  /login_check


logout:
    pattern:  /logout

最后,不要忘记更新您的数据库。

版本

2.* - 处理用户角色的数据库