有了今天的软件包, 利用Laravel应用程序的LDAP认证的高度可访问性和用户友好的功能是再好不过的了.按照本教程中的步骤,在15分钟内让你的Laravel应用程序与windows active directory进行认证。
首先,我们将利用一个专门设计的PHP包来完成这项工作,它被命名为Adldap2-Laravel。
其次, 在我们进行一步一步的指导之前, 你将需要三样东西作为一个绝对的最低限度.
- 一个LDAP服务器的连接主机名
- 一个活跃的账户, 你已经可以在活动目录上进行身份验证. 即, 你给的目录的登录用户ID和密码.
- Laravel登录系统已经预先配置好了。如果你还没有,那么你可以按照我之前做的指南,设置Laravel 5.8的认证和基于角色的访问。
前提条件测试
让我们花点时间来测试一下我们是否能与LDAP服务器建立初始连接。在安装任何软件包之前,现在做这个是有意义的,以确保主机和账户凭证实际工作并允许。这些信息就是主机名和连接并绑定到服务器的能力。
在任何给定的控制器中执行以下脚本,该控制器被设置为你选择的路由和视图。
确保你用相关信息替换YOUR_LDAP_SERVER_IP,YOUR_ACTIVE_DIRECTORY_USERNAME 和YOUR_ACTIVE_DIRECTORY_PASSWORD 。
脚本
$ldapconn = ldap_connect("YOUR_LDAP_SERVER_IP")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, "YOUR_ACTIVE_DIRECTORY_USERNAME", "YOUR_ACTIVE_DIRECTORY_PASSWORD");
// verify binding
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
如果你遇到 "无法连接到LDAP服务器 "或 "LDAP绑定失败......",那么你将需要联系LDAP服务器管理员以确保你的细节是正确的。如果你没有达到'LDAP绑定成功......'的信息,你将会被限制在你可以或不可以做的事情上,这取决于LDAP服务器的设置。最好先让它们都工作起来。
如果你得到了LDAP绑定成功的消息, 那么我们就可以进入下一步了, 这就是安装一个非常方便的软件包,名为Adldap2-Laravel.
安装和配置Adldap2-Laravel
是时候安装这个包了,它将与LDAP认证服务器和Laravel的登录系统对接。
第1步
用Composer运行以下命令
composer require adldap2/adldap2-laravel
第2步
在你的config/app.php文件中添加或确保以下供应商的存在。
Adldap\Laravel\AdldapServiceProvider::class, Adldap\Laravel\AdldapAuthServiceProvider::class,
并将以下别名也添加到你的别名阵列中。
'Adldap' => Adldap\Laravel\Facades\Adldap::class,
最后,执行以下命令
php artisan vendor:publish
第3步
现在我们已经运行了发布命令,现在在你的配置文件中可以看到2个新文件:ldap**.php和ldap_auth.php**
在这些配置文件中,有相当多的可改变的设置,但幸运的是,我们只需要担心其中的几个。
首先,我们将配置 ldap.php文件。
ldap.php
更改1
在第146行左右,编辑'hosts'默认值为你的LDAP服务器主机名。
'hosts' => explode(' ', env('LDAP_HOSTS', 'your.ldap.host.com')),
更改2
在第186行左右,我们需要编辑'base-dn'以匹配你的LDAP服务器。可以从你的LDAP管理员那里得到这个信息,或者作为一个开始,把每个句号所在的主机名拆开。
就像下面这样 -
'base_dn' => env('LDAP_BASE_DN', 'DC=your,DC=ldap,DC=host,DC=com'),
更改3
接下来是至关重要的用户名和密码。在第201行和第202行,编辑用户名和密码的值,使之与你工作中的活动目录的认证资格相匹配。
'username' => env('LDAP_USERNAME', 'YOUR_USERNAME'),
'password' => env('LDAP_PASSWORD', 'YOUR_PASSWORD'),
ldap.php文件到此为止,让我们继续。
ldap_auth.php
改变1
在ldap_auth.php文件中,我们要改变我们要与用户表同步的值。你可能需要向活动目录管理员确认这一点,但在本教程的版本中,用户的名字在 "displayname "标签或键下。
因此,要做的改变是'name'值要与活动目录中的名字标签相匹配。
下面的代码块在第290行左右。
'sync_attributes' => [
'email' => 'userprincipalname',
'name' => 'displayname', // Changed from 'cn'
],
第4步
最后, 为了连接配置中的所有点, 我们需要告诉Laravel使用Adldap驱动.
找到config/auth.php文件, 打开它并进入 "providers "数组.
将 "驱动 "的值改为 "ldap",如下所示
'providers' => [
'users' => [
'driver' => 'ldap', // Was 'eloquent'.
'model' => App\User::class,
],
第5步
Adldap自动从活动目录中提取一个对象指南,该指南将被存储在本地用户表中。因此,我们需要改变当前的用户表以容纳这个新值。
用下面的命令创建一个新的迁移 -
php artisan make:migration add_objectguid_to_users_table --table=users
Schema::table('users', function (Blueprint $table) {
$table->string('objectguid');
});
并且还要确保你的down() 函数看起来像这样
Schema::table('users', function($table) {
$table->dropColumn('objectguid');
});
现在运行下面的命令
php artisan migrate
就这样, 新的列将被添加到你的用户表中, 包现在被配置为与你的登录系统对接.
使用Laravel LDAP认证
现在要做的就是像往常一样登录到你的Laravel应用程序.到你的登录页面, 输入你的**活动目录电子邮件和密码,**然后点击登录按钮.
成功登录后, 你可以检查数据库中的用户表, 你会发现一个新的记录是你刚刚登录的账户.
希望这对你有帮助!
The postLaravel LDAP Authentication Tutorial Using Adldap2-Laravelappeared first onCode Wall.