sroutier/eloquent-ldap

一个 Laravel 扩展包,首先尝试在内部数据库中登录用户,如果失败,则尝试配置的 LDAP/AD 服务器。

2.0 2017-11-14 19:49 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:11:14 UTC


README

Latest Version on Packagist Software License

一个 Laravel 扩展包,首先尝试在内部数据库中登录用户,如果失败,则尝试配置的 LDAP/AD 服务器。可选地,它将为首次登录的 LDAP 用户创建本地用户记录,并授予该用户访问具有与 LDAP 组匹配名称的本地组的权限。

版本兼容性

安装

通过 Composer

$ composer require sroutier/eloquent-ldap

声明提供者

在您的 ./config/app.php 文件的提供者数组中添加此声明

        Sroutier\EloquentLDAP\Providers\EloquentLDAPServiceProvider::class,

发布资产

要发布资产、配置文件和迁移脚本,请运行以下命令

$ php artisan vendor:publish --provider="Sroutier\EloquentLDAP\Providers\EloquentLDAPServiceProvider"

这将发布一个配置文件和一个迁移文件。

迁移

迁移脚本将为 users 表添加一个新列 auth_type,并为 groups 表添加一个列 resync_on_login。您应该已经拥有这两个表,但如果您没有或者您想要为这些目的使用不同的表,提供的迁移脚本是创建这些表的示例,但已被注释。您需要检查迁移脚本并根据您的场景进行调整。

准备好后,使用以下命令运行迁移脚本

$ php artisan migrate

配置

建议通过在您 .env 文件中定义以下变量并调整那里的值来配置此包。有关每个设置的详细说明,请参阅您上面发布的配置文件。

您需要的配置将根据您希望验证的服务器类型而有所不同。下面是两种选项的示例配置部分:轻量级目录访问协议 (LDAP) 和微软活动目录 (MSAD)。

微软活动目录服务器。

以下是一个 .env 配置文件的部分,展示如何配置您的系统以访问微软活动目录服务器

eloquent-ldap.enabled=true
eloquent-ldap.debug=false
eloquent-ldap.server_type=MSAD
eloquent-ldap.create_accounts=true
eloquent-ldap.replicate_group_membership=true
eloquent-ldap.resync_on_login=true
eloquent-ldap.group_model=App\Models\Role
eloquent-ldap.label_internal=internal
eloquent-ldap.label_ldap=ldap
eloquent-ldap.account_suffix=@company.com
eloquent-ldap.base_dn=DC=department,DC=company,DC=com
eloquent-ldap.server=ldapsrv01.company.com
eloquent-ldap.port=389
eloquent-ldap.user_name=ldap_reader
eloquent-ldap.password=PaSsWoRd
eloquent-ldap.return_real_primary_group=true
eloquent-ldap.secured=false
eloquent-ldap.secured_port=636
eloquent-ldap.recursive_groups=true
eloquent-ldap.sso=false
eloquent-ldap.username_field=samaccountname
eloquent-ldap.email_field=userprincipalname
eloquent-ldap.first_name_field=givenname
eloquent-ldap.last_name_field=sn
eloquent-ldap.user_filter=(&(objectcategory=person)(samaccountname=%username))

轻量级目录访问协议服务器。

以下是一个 .env 配置文件的部分,展示如何配置您的系统以访问轻量级目录访问协议服务器

eloquent-ldap.enabled=true
eloquent-ldap.debug=false
eloquent-ldap.server_type=LDAP
eloquent-ldap.create_accounts=true
eloquent-ldap.replicate_group_membership=false
eloquent-ldap.resync_on_login=false
eloquent-ldap.group_model=App\Models\Role
eloquent-ldap.label_internal=internal
eloquent-ldap.label_ldap=ldap
eloquent-ldap.account_suffix=
eloquent-ldap.base_dn=dc=example,dc=com
eloquent-ldap.server=ldap.forumsys.com
eloquent-ldap.port=389
eloquent-ldap.user_name=cn=read-only-admin,dc=example,dc=com
eloquent-ldap.password=password
eloquent-ldap.return_real_primary_group=true
eloquent-ldap.secured=false
eloquent-ldap.secured_port=636
eloquent-ldap.recursive_groups=true
eloquent-ldap.sso=false
eloquent-ldap.username_field=uid
eloquent-ldap.email_field=mail
eloquent-ldap.first_name_field=
eloquent-ldap.last_name_field=sn
eloquent-ldap.user_filter=(&(objectclass=person)(uid=%username))

注意: 上述配置选项将允许您使用由 Forum Systems 托管的公开可用的 OpenLDAP 测试服务器连接和验证用户。

MSAD 与 LDAP 的区别

以下是一些根据所使用的服务器类型配置系统的不同之处,值得指出。

  • eloquent-ldap.server_type: 可以是 LDAP 或 MSAD。让系统知道如何与认证服务器交互。
  • eloquent-ldap.replicate_group_membership: 目前仅支持 MSAD 服务器。
  • eloquent-ldap.resync_on_login: 目前仅支持 MSAD 服务器。
  • eloquent-ldap.account_suffix
    • LDAP:对于 LDAP 服务器应保持为空。
    • MSAD:应包含用户电子邮件地址的静态部分。
  • eloquent-ldap.user_name
    • LDAP:应绑定用户的完整 DN。
    • MSAD:仅是用于绑定的用户名。
  • eloquent-ldap.return_real_primary_group
    • LDAP:未使用。
    • MSAD:修复Microsoft AD不遵循标准可能会产生额外的处理。

用法

用户表/模型必须包含以下列/属性:usernamefirst_namelast_nameemail。此包提供的迁移脚本包含创建此类表的示例,但已注释。

用户模型必须在fillable数组中添加auth-type属性,以允许在数据库中设置列。

此外,您的登录视图和AuthController必须接受用户名和密码。如果您愿意,它们可以接受其他字段,例如电子邮件、安全令牌等。但是,当新用户第一次尝试登录时,由于他在本地数据库中找不到,包将需要用户名来对LDAP服务器进行身份验证。

示例

有关此包在活跃项目中使用的具体示例,请参阅sroutier/laravel-5.1-enterprise-starter-kit。请注意,在该项目中,此包与Zizaco/entrust结合使用以提供基于角色的授权,因此没有组模型,而是角色模型。

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何安全相关的问题,请通过电子邮件sroutier@gmail.com联系,而不是使用问题跟踪器。

鸣谢

许可证

GNU通用公共许可证版本3(GPLv3)。有关更多信息,请参阅许可证文件