uogsoe / ldap-laravel
为我们的LDAP服务添加自定义认证提供者
4.0.0
2022-06-10 12:25 UTC
Requires
Requires (Dev)
- orchestra/testbench: ~7.0
README
工作进度中!请勿使用!
此代码为Laravel auth方案添加了'ldapusers'提供者。这是为了满足我们特定的需求,并且按照我们通常使用本地LDAP服务的方式工作。
它执行以下操作
- 如果用户使用在用户表中找到的用户名和密码登录 - 他们将按照默认的Laravel应用程序登录。这是为了支持不在我们的LDAP系统中的'外部'用户。
- 否则,如果我们发现用户名在LDAP中,我们将尝试查找他们的详细信息,在'users'表中为他们创建本地记录,并在(假设他们的密码是正确的)登录他们。
用法
在你的 config/auth.php
文件中添加新的提供者,并将默认web guard中的'users'更改为'ldapusers'
...
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'ldapusers',
// originally 'provider' => 'users'
],
...
'providers' => [
...
'ldapusers' => [
'driver' => 'ldapeloquent',
'model' => App\User::class,
],
]
并且你需要将以下内容添加到 app\Http\Controllers\Auth\LoginController.php 中(假设你已经运行了 artisan make:auth
)
public function username()
{
return 'username';
}
你需要在你的 .env 文件中设置两个环境变量
LDAP_SERVER=your.ldap.server
LDAP_OU=your-base-ou
例如
LDAP_SERVER=ldap.yourcompany.com
LDAP_OU=Staff
假设
我们假设你的用户模型位于默认的 App\User
类。我们还期望 users
表具有以下字段
username (string) - the primary username to look up (rather than 'email')
email (string) - the users email address
surname (string) - the users surname
forenames (string) - the users forenames
is_staff (boolean) - whether the user is a member of staff or not
测试
在这个仓库本身中没有测试,因为在不完全框架可用的情况下编写测试比较困难。因此,有一个测试应用程序在 https://github.com/UoGSoE/test-LaravelLdap,它引入了这个包并检查它是否正常工作。