radebatz/ldap-auth-service-provider

此包已被废弃,不再维护。未建议替代包。

Silex Ldap身份验证服务提供程序。

v1.3.0 2016-09-29 23:06 UTC

This package is auto-updated.

Last update: 2023-12-27 13:18:41 UTC


README

Build Status Coverage Status

此服务提供程序提供基于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)