yunai39 / simple-ldap-bundle
此包提供了Symfony Security与LDAP通讯录的集成,LDAP通讯录中的每个用户都会有一个默认角色,但也可以为特定用户设置特定角色。
Requires
- php: >=5.2.4
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.* - 处理用户角色的数据库