instaclick / ldap-bundle
Symfony 2.1 的 LDAP 扩展包
v1.3.5
2012-07-27 18:53 UTC
Requires
- php: >=5.3.6
- symfony/config: >=2.1.0,<2.2.0
- symfony/dependency-injection: >=2.1.0,<2.2.0
- symfony/event-dispatcher: >=2.1.0,<2.2.0
- symfony/form: >=2.1.0,<2.2.0
- symfony/http-foundation: >=2.1.0,<2.2.0
- symfony/http-kernel: >=2.1.0,<2.2.0
- symfony/security: >=2.1.0,<2.2.0
Requires (Dev)
- symfony/symfony: >=2.1.0,<2.2.0
This package is not auto-updated.
Last update: 2024-09-14 12:39:29 UTC
README
LdapBundle 提供了一个不依赖 apache mod_ldap
的 LDAP 认证系统。它使用 php-ldap
扩展并通过表单验证用户。LdapBundle 还可以用于授权,它可以检索 LDAP 用户的角色。
联系方式
您可以通过 freenode irc 联系我;频道 #symfony-fr;昵称:aways
安装
- 下载 LdapBundle
- 配置自动加载器
- 启用扩展包
- 配置 LdapBundle 的 security.yml
- 导入 LdapBundle 的 security.yml
- 导入 LdapBundle 的路由
- 实现登出功能
- 订阅 PRE_BIND 事件
获取扩展包
Composer
修改您的项目根目录下的 composer.json
// {root}/composer.json { [...], "require": { [...], "imag/ldap-bundle": "dev-master" } }
启用扩展包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new IMAG\LdapBundle\IMAGLdapBundle(), ); }
配置 security.yml
# src/IMAG/LdapBundle/Resources/config/security.yml security: firewalls: restricted_area: pattern: ^/ anonymous: ~ provider: ldap imag_ldap: ~ # alternative configuration # imag_ldap: # login_path: /ninja/login logout: path: /logout target: / providers: ldap: id: imag_ldap.security.user.provider encoders: IMAG\LdapBundle\User\LdapUser: plaintext access_control: - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/, roles: IS_AUTHENTICATED_FULLY } imag_ldap: client: host: your.host.foo port: 389 # version: 3 # Optional # username: foo # Optional # password: bar # Optional user: base_dn: ou=people,dc=host,dc=foo # filter: (&(foo=bar)(ObjectClass=Person)) #Optional name_attribute: uid role: base_dn: ou=group, dc=host, dc=foo # filter: (ou=group) #Optional name_attribute: cn user_attribute: member user_id: [ dn or username ]
您需要配置 imag_ldap 部分下的参数。
注意
如果未设置,可选参数将使用默认值。您可以禁用此功能;只需将参数设置为 NULL。
imag_ldap: # ... role: # ... filter: NULL
导入 security.yml
# app/config/config.yml imports: - { resource: ../../src/IMAG/LdapBundle/Resources/config/security.yml }
导入路由
# app/config/routing.yml imag_ldap: resource: "@IMAGLdapBundle/Resources/config/routing.yml"
实现登出功能
只需创建一个带有登出目标的链接。
<a href="{{ path('logout') }}">logout</a>
注意:您可以参考官方的 Symfony 文档:[https://symfony.ac.cn/doc/2.0/book/security.html#logging-out](https://symfony.ac.cn/doc/2.0/book/security.html#logging-out)
订阅 PRE_BIND 事件
现在您可以在用户在 LDAP 上进行认证之前执行自己的逻辑。如果您想中断认证,只需返回一个异常。
订阅
<tag name="kernel.event_listener" event="imag_ldap.security.authentication.pre_bind" method="onPreBind" />
示例
<?php use IMAG\LdapBundle\Event\LdapUserEvent, public function onPreBind(LdapUserEvent $event) { $user = $event->getUser(); $config = $this->appContext->getConfig(); $ldapConf = $config['ldap']; if (!in_array($user->getUsername(), $ldapConf['allowed'])) { throw new \Exception('Not allowed ldap user'); } $user->addRole('ROLE_LDAP'); }