uogsoe/ldap-laravel

为我们的LDAP服务添加自定义认证提供者

4.0.0 2022-06-10 12:25 UTC

This package is auto-updated.

Last update: 2024-09-10 17:16:08 UTC


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,它引入了这个包并检查它是否正常工作。