dsdevbe/ldap-connector

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

在Laravel中轻松实现LDAP认证

4.0.1 2016-04-16 15:47 UTC

README

我在实习期间创建了此项目,以便在公司内部各种应用程序之间轻松实现认证。ldap-connector的作用范围仅限于将Laravel与LDAP服务器进行认证。

如果您正在寻找替代方案,请检查Adldap2-Laravel。他们还创建了出色的库Adldap2,ldap-connector就是使用的。

我将停止维护此项目,但想感谢所有贡献或使用此项目的人。

Ldap-connector

Build Status Latest Stable Version Total Downloads License

为Laravel 5.x提供了一种通过LDAP认证用户的解决方案。它使用Adldap2库创建Laravel与LDAP之间的桥梁

安装

Laravel 5.1 - 5.0

  1. 通过将以下行添加到composer.json,通过Composer安装此包

        "dsdevbe/ldap-connector": "3.0.*"

    或者您也可以使用命令行

    composer require "dsdevbe/ldap-connector:3.0.*"
  2. 通过打开config/app.php并将新的服务提供者添加到app配置中的providers数组来添加服务提供者。

    Dsdevbe\LdapConnector\LdapConnectorServiceProvider::class
    
  3. 将Laravel配置中的认证驱动更改为使用ldap驱动。您可以在以下文件中找到此设置:config/auth.php

    'driver' => 'ldap',
  4. 使用php artisan vendor:publish在Laravel配置文件夹中发布一个新的配置文件,您将找到config/ldap.php并修改以满足您的需求。有关配置的更多详细信息,您始终可以查看ADLAP文档

    return array(
        'plugins' => array(
            'adldap' => array(
                'account_suffix'=>  '@domain.local',
                'domain_controllers'=>  array(
                    '192.168.0.1',
                    'dc02.domain.local'
                ), // Load balancing domain controllers
                'base_dn'   =>  'DC=domain,DC=local',
                'admin_username' => 'admin', // This is required for session persistance in the application
                'admin_password' => 'yourPassword',
            ),
        ),
    );
    

    请注意,字段'admin_username'和'admin_password'对于会话持久性是必需的!

使用

LDAP插件是Auth类的扩展,其行为将与使用Eloquent驱动时的正常使用相同。

if (Auth::attempt(array('username' => $username, 'password' => $password)))
{
    return Redirect::intended('dashboard');
}

您可以在Laravel Auth文档中找到更多关于使用Auth::函数的示例。

使用AuthController

如果您想使用Laravel附带的身份验证控制器,您需要更改以下文件。默认情况下,App\Http\Controllers\Auth\AuthController会检查email字段,如果没有提供任何内容。要覆盖此值,请向AuthController中添加以下行。

protected $username = 'username';

Laravel文档: 身份验证快速入门

Ldap Groups

  • Auth::user()->getGroups() 返回当前用户所属的 数组
  • Auth::user()->inGroup('GROUPNAME') 如果用户属于 GROUPNAME,则返回 布尔值

Ldap 用户信息

  • Auth::user()->getUsername() 返回认证的用户名。
  • Auth::user()->getFirstname() 返回认证的姓。
  • Auth::user()->getLastname() 返回认证的名。
  • Auth::user()->getEmail() 返回认证的电子邮件地址。

Laravel 5.2 - ...

  1. 通过将以下行添加到composer.json,通过Composer安装此包

    "dsdevbe/ldap-connector": "4.0.*"

    或者您也可以使用命令行

    composer require "dsdevbe/ldap-connector:4.0.*"
  2. 通过打开config/app.php并将新的服务提供者添加到app配置中的providers数组来添加服务提供者。

    Dsdevbe\LdapConnector\LdapConnectorServiceProvider::class
    
  3. 将Laravel配置中的认证驱动更改为使用ldap驱动。您可以在以下文件中找到此设置:config/auth.php

    'providers' => [
        'users' => [
            'driver' => 'ldap',
            'adldap' => [
                'account_suffix'=>  '@domain.local',
                'domain_controllers'=>  array(
                    '192.168.0.1',
                    'dc02.domain.local'
                ), // Load balancing domain controllers
                'base_dn'   =>  'DC=domain,DC=local',
                'admin_username' => 'admin', // This is required for session persistance in the application
                'admin_password' => 'yourPassword',
            ],
        ],
    ],

    请注意,字段'admin_username'和'admin_password'对于会话持久性是必需的!

用法

LDAP插件是Auth类的扩展,其行为将与使用Eloquent驱动时的正常使用相同。

if (Auth::attempt(array('username' => $username, 'password' => $password)))
{
    return Redirect::intended('dashboard');
}

您可以在Laravel Auth文档中找到更多关于使用Auth::函数的示例。

使用 AuthController

如果您想使用Laravel附带的身份验证控制器,您需要更改以下文件。默认情况下,App\Http\Controllers\Auth\AuthController会检查email字段,如果没有提供任何内容。要覆盖此值,请向AuthController中添加以下行。

protected $username = 'username';

Laravel文档: 身份验证快速入门

Ldap 用户信息

与 ldap-connector V3 的不同之处在于,现在 adLDAP 模型直接暴露在用户模型上。这意味着您可以直接从用户处获取所有数据。要访问 adldap 模型,您现在可以使用 Auth::user()->getAdLDAP()

示例

  • Auth::user()->getAdLDAP()->getAccountName()
  • Auth::user()->getAdLDAP()->getFirstName()

要获取更多属性,请查看 adLDAP2 文档

贡献

欢迎为此项目贡献新功能或错误修复。我们欢迎改进!