radebatz / ldap-auth-service-provider
此包已被废弃,不再维护。未建议替代包。
Silex Ldap身份验证服务提供程序。
v1.3.0
2016-09-29 23:06 UTC
Requires
- php: >=5.5.9
- psr/log: ^1.0
- silex/silex: ^1.3|~2.0
- symfony/security: ~2.8|^3.0
- zendframework/zend-ldap: ~2.4
Requires (Dev)
- monolog/monolog: ^1.13
- phpunit/phpunit: ~4
- satooshi/php-coveralls: dev-master
- symfony/browser-kit: ~2.8|^3.0
README
此服务提供程序提供基于Ldap的身份验证和授权。
基本用法
- 基于表单的身份验证
- 角色根据用户是否在指定的LDAP组中映射。
- LDAP sn属性映射到创建的用户对象的userName属性
// register service with name LDAP-FORM $app->register(new LdapAuthenticationServiceProvider('LDAP-FORM'), array( 'security.ldap.LDAP-FORM.options' => array( 'auth' => array( 'entryPoint' => 'form', ), 'ldap' => array( 'host' => 'localhost', 'username' => 'username-for-initial-bind', 'password' => 'xxx', ), ) )); // configure firewalls $app->register(new SecurityServiceProvider(), array( 'security.firewalls' => array( 'login' => array( 'pattern' => '^/login$', ), 'default' => array( 'pattern' => '^.*$', 'anonymous' => true, 'LDAP-FORM' => array( // form options 'check_path' => '/login_check_ldap', 'require_previous_session' => false, ), 'users' => function () use ($app) { // use the pre-configured Ldap user provider return $app['security.ldap.LDAP-FORM.user_provider'](array( // configure LDAP attribute to use for auth bind call (dn is the default) 'authName' => 'dn', 'attr' => array( // LDAP attribute => user property // these require setter support in the user class 'sn' => 'lastName', ), 'roles' => array( 'CN=Development,OU=Groups,DC=radebatz,DC=net' => 'ROLE_USER', 'CN=Admins,OU=Groups,DC=radebatz,DC=net' => 'ROLE_ADMIN', ), 'baseDn' => 'DC=radebatz,DC=net', )); }, ), ) ));
安装
推荐通过 composer 安装ldap-auth-service-provider。
使用以下命令安装最新版本:
$ composer require radebatz/ldap-auth-service-provider
配置Ldap
Ldap相关代码依赖于 zend-ldap
,所以所有配置选项都直接传递。更多详情请查看 zend-ldap文档
。
默认用于认证(绑定)用户的用户名是LDAP dn属性(存在默认映射 'dn' => 'authName'
)。要更改此或允许使用备用属性,可以在上面的示例中使用以下属性映射
'attr' => array(
// LDAP attribute => user property
'sn' => 'lastName',
),
注意:加载的用户对象的'authName'属性用于验证用户凭据(密码)时的绑定。默认情况下,LDAP 'dn'属性映射到用户的authName属性。
此外,提供程序允许配置要尝试的主机列表。如果列表中的任何主机都无法连接,则使用常规配置的主机作为最后的手段。
示例
ldap:
ldap:
hosts:
- ldap1
- ldap2
host: localhost
在这种情况下,代码将按以下顺序尝试连接:ldap1、ldap2、localhost。
自定义用户类
LdapUserProvider类允许配置要使用的自定义User类。唯一限制是自定义类必须有一个与默认类 Symfony\\Component\\Security\\Core\\User\\User
兼容的构造函数。
要求
- Silex 2.0
- PHP 5.5
许可
所有代码均受MIT许可证的许可。
变更日志
破坏向后兼容性的问题被标记为[BC]。
v1.0.0
- 初始发布
v1.1.0
- 将选项移动到security.ldap.[serviceName]命名空间
- 添加预配置的用户提供程序
v1.2.0
- 添加Silex 1.3支持
- 错误修复
v1.2.1
- 添加主机选项以允许备用服务器列表
v1.2.2
- 修复LdapException处理
- 添加Psr\Log依赖
- [BC] 将日志记录器改为可选的第二个构造函数参数,而不是从$app中获取
v1.3.0
- 尝试绑定用户时使用用户DN作为名称 [#15]
- 添加新的authName映射,允许控制认证时使用哪个LDAP属性进行绑定(默认为DN)
- 修复LdapUserProvider默认值的合并
- 在将LDAP数据映射到用户实例时检查值数组
- [BC] 自定义用户类必须支持魔术get/set方法或至少实现
getAuthName()
和setAuthName($authName)