我使用DigitalOcean教程设置了ldap并安装了AdLdap2软件包,如果有人可以向我说明为什么登录ldap服务器时仍然尝试使用默认的用户名和密码登录,如果没有,我无法正确解释问题对您没有意义,您能在这里放置一些链接来帮助您设置服务器并将laravel项目与ldap连接
答案 0 :(得分:0)
我知道我来晚了,但是这些是我为其中一个应用程序设置时的笔记。
安装Adldap2-laravel软件包:
$作曲家需要adldap2 / adldap2-laravel
创建身份验证支架:
$ php artisan make:auth
在 .env 文件中定义以下环境变量:
# .env
LDAP_HOSTS=[192.168.1.10]
LDAP_PORT=[389]
LDAP_BASE_DN=[DC=contoso,DC=com]
LDAP_USERNAME=[ldap@contoso.com]
LDAP_PASSWORD=[password123]
如果仅使用LDAP身份验证,请禁用默认路由。在您的 /routes/web.php 文件中,对Auth::routes()
进行以下更改:
# /routes/web.php
Auth::routes([
'reset' => false,
'verify' => false,
'register' => false,
])
在您的 /resources/views/auth/login.blade.php 文件中,将电子邮件地址的标签更改为用户名,并删除@error('email)
部分从相应的文本输入中,并将该文本输入上的名称更改为您要查找用户的任何LDAP属性(samaccountname
或userprincipalname
)。完成的文本输入应类似于以下内容:
# /resources/views/auth/login.blade.php
<input type="text" class="form-control" name="samaccountname" value="{{ old('samaccountname') }}" required autofocus>
通过运行以下两个命令来创建 ldap.php 和 ldap_auth.php 文件:
$ php artisan vendor:publish --provider“ Adldap \ Laravel \ AdldapServiceProvider”
$ php artisan vendor:publish --provider“ Adldap \ Laravel \ AdldapAuthServiceProvider”
在 /config/auth.php 中的providers
下更改用户驱动程序以使用ldap而不是雄辩,并注释掉其下方的模型,如下所示:
# /config/auth.php
'providers' => [
'users' => [
'driver' => 'ldap', // <- was eloquent, changed to ldap
# 'model' => App\User::class, // <- commented out, not using anymore
在 /config/ldap_auth.php 中:
provider
从DatabaseUserProvider
更改为NoDatabaseUserProvider
:# /config/ldap_auth.php
'provider' => Adldap\Laravel\Auth\NoDatabaseProvider::class
locate_users_by
下的ldap
更改为您计划通过(samaccountname
或userprincipalname
)对用户进行身份验证的任何字段# /config/ldap_auth.php
'ldap' => [
'locate_users_by' => 'samaccountname',
'bind_users_by' => 'distinguishedname',
],
在您的 /app/Http/Controllers/Auth/LoginController.php 文件中,您必须添加一个username()
函数,该函数返回通过以下方式对用户进行身份验证的LDAP属性:
# /app/Http/Controllers/Auth/LoginController.php
public function username()
{
return 'samaccountname';
}
在您的 /config/app.php 文件中,为Adldap Facade添加别名有助于避免每次需要访问它时都必须键入它:
# /config/app.php
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
. // scroll
. // to
. // the
. // bottom
'View' => Illuminate\Support\Facades\View::class,
'Adldap' => Adldap\Laravel\Facades\Adldap::class // <- add this
],
use Auth;
并在文件的开头添加其他 use 合同,则可以访问经过身份验证的用户的属性,如下所示:# /app/Http/Controllers/HomeController
use Auth;
public function index()
{
$user = Auth::user();
$cn = $user->getCommonName(); // assigns currently authenticated user's Common Name
return view('home')->with('cn', $cn);
// using {{ $cn }} on the home's view would output the Common Name
}
use Adldap;
与其他 use 合同一起添加,并使用查询构建器:# /app/Http/Controllers/HomeController
use Adldap;
public function index()
{
$users = Adldap::search()->where('objectclass', '=', 'person')->sortBy('cn', 'asc')->get();
return view('home', compact('users'))
// use a foreach loop on the view to iterate through users and attributes
}