dsdevbe / ldap-connector
在Laravel中轻松实现LDAP认证
Requires
- php: >=5.5.9
- ext-ldap: *
- adldap2/adldap2: 5.2.*
- laravel/framework: ~5.0
Requires (Dev)
- phpspec/phpspec: ^2.2
This package is not auto-updated.
Last update: 2022-02-01 12:40:51 UTC
README
我在实习期间创建了此项目,以便在公司内部各种应用程序之间轻松实现认证。ldap-connector的作用范围仅限于将Laravel与LDAP服务器进行认证。
如果您正在寻找替代方案,请检查Adldap2-Laravel。他们还创建了出色的库Adldap2,ldap-connector就是使用的。
我将停止维护此项目,但想感谢所有贡献或使用此项目的人。
Ldap-connector
为Laravel 5.x提供了一种通过LDAP认证用户的解决方案。它使用Adldap2库创建Laravel与LDAP之间的桥梁
安装
Laravel 5.1 - 5.0
-
通过将以下行添加到
composer.json
,通过Composer安装此包"dsdevbe/ldap-connector": "3.0.*"
或者您也可以使用命令行
composer require "dsdevbe/ldap-connector:3.0.*"
-
通过打开
config/app.php
并将新的服务提供者添加到app配置中的providers数组来添加服务提供者。Dsdevbe\LdapConnector\LdapConnectorServiceProvider::class
-
将Laravel配置中的认证驱动更改为使用ldap驱动。您可以在以下文件中找到此设置:
config/auth.php
'driver' => 'ldap',
-
使用
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 - ...
-
通过将以下行添加到
composer.json
,通过Composer安装此包"dsdevbe/ldap-connector": "4.0.*"
或者您也可以使用命令行
composer require "dsdevbe/ldap-connector:4.0.*"
-
通过打开
config/app.php
并将新的服务提供者添加到app配置中的providers数组来添加服务提供者。Dsdevbe\LdapConnector\LdapConnectorServiceProvider::class
-
将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 文档
贡献
欢迎为此项目贡献新功能或错误修复。我们欢迎改进!