viharm / psm-ldap-auth

用于对目录进行认证的 PHP 服务器监控模块

v1.1.4 2022-03-13 19:46 UTC

This package is auto-updated.

Last update: 2024-09-14 04:58:49 UTC


README

版本1.1.4
变更https://gitlab.com/viharm/PsmLDAPauth/-/merge_requests/14/commits
下载https://gitlab.com/viharm/PsmLDAPauth/-/tags
问题https://gitlab.com/viharm/PsmLDAPauth/-/issues
许可GNU GPL v3
语言PHP

这是一个模块,用于对 PHP 服务器监控 用户进行 LDAP 目录认证

安装

先决条件

本存储库中的文件 psmldapauth.php 是模块的启动器。其他依赖项包括以下内容。

下载

下载 LDAP 模块

存档

从本页顶部提供的下载链接获取发行存档。

Composer

从 v1.1.0 版本开始,PsmLDAPauth 已为 Composer 启用,并在 Packagist 上以 viharm/psm-ldap-auth 的形式提供。尽管此库可以独立安装或包含在任何使用 Composer 的项目中,但请注意,此库专门为与 PHP 服务器监控 一起使用而开发。

独立

虽然此库在没有 PHP 服务器监控 (PSM) 框架/项目的可感知用途,但可以使用 Composer 安装此项目的独立副本

php compser.phar create-project viharm/psm-ldap-auth PsmLDAPauth

上述命令将在当前工作目录的子目录 PsmLDAPauth 中安装 PsmLDAPauth

依赖关系

要使 Composer 自动将 PsmLDAPauth 作为依赖项安装,请将以下内容包含在您的 composer.json

{
	"require": {
    "viharm/psm-ldap-auth": "^1.1"
	}
}

这将将在典型 Composer-启用项目的标准 vendor 子目录中安装 PsmLDAPauth

克隆仓库

将仓库克隆到 PHP 服务器监控 安装目录的 vendor 目录中;请记住递归地拉取子模块

git clone --recurse-submodules \
https://gitlab.com/viharm/PsmLDAPauth.git \
/PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/

部署

将存档内容提取到 .../PATH/TO/PHPSERVERMON/vendor/ 目录中。您应该有一个如下所示的目录结构

  • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/README.md
  • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/LICENSE
  • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/VERSION
  • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/psmldapauth.php
  • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/phpldapauth/
    • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/phpLDAPauth/phpldapauth.php
    • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/phpLDAPauth/...
  • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/phpDBauth/
    • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/phpDBauth/phpdbauth.php
    • /PATH/TO/PHPSERVERMON/vendor/PsmLDAPauth/phpDBauth/...

尽管 LDAP 功能已部署在供应商目录树中,但 PsmLDAPauth 依赖于集成到以下 PHP 服务器监控 框架文件中的代码。

  • /PATH/TO/PHPSERVERMON/src/templates/default/module/config/config.tpl.html
  • /PATH/TO/PHPSERVERMON/src/psm/Module/Config/Controller/ConfigController.php
  • /PATH/TO/PHPSERVERMON/src/lang/en_US.lang.php
  • /PATH/TO/PHPSERVERMON/src/psm/Service/User.php
  • 位于 /PATH/TO/PHPSERVERMON/src/lang/ 中的相关语言文件

配置

PsmLDAPauth 在部署期间不可由用户配置。以下选项在“认证”选项卡中的配置部分 Web 界面中可用。

  • 启用
  • 主机
  • 端口
  • 类型(如果为 AD 则包括域)
  • 版本
  • 引用
  • 基本 DN
  • 用户属性名称
  • 组名称属性
  • 组成员属性
  • 用户容器 RDN
  • 组容器 RDN

以下将讨论这些参数的说明。

基本设置

目录认证状态

检查此配置将 PHP服务器监控器 配置为使用 LDAP 验证模块。

目录主机

指定目录服务所在的主机位置。

如果没有指定,则使用默认值 localhost

目录服务端口

指定目录服务所在的主机端口。

如果没有指定,则使用 OpenLDAP 默认的 389 端口。

基本 DN

指定目录的基础DN。

这是一个必填设置。没有默认值。

可选功能和设置

前面显示的示例 conf.ini 包含了启动所需的最小选项。

其他配置选项包括。

目录类型

指定使用的 LDAP 目录类型。可以是以下之一

  • OpenLDAP
  • AD LDS
  • AD DS

如果没有指定,则使用默认的 OpenLDAP

Active Directory 域

如果使用 Active Directory,请指定(除了上述内容外)服务器类型和用户的域,如下所示

对于 Active Directory 域服务(AD DS),提供 NETBIOS 域。

对于 Active Directory 轻量级目录服务(AD LDS),提供 DNS 域。

组名

这可以用来指定用户必须属于的 LDAP 组,以便进行身份验证。

如果没有指定此选项,则不检查组成员资格,任何可以使用目录用户名和密码绑定到目录的用户都可以进行身份验证。

用户属性名称

指定用于在目录环境中标识用户名的属性。

如果没有指定,则使用 OpenLDAP 默认的 uid

组名称属性

指定用于在目录环境中标识组名的属性。

如果没有指定,则使用 OpenLDAP 默认的 cn

组成员资格标识

指定组条目中的属性。 PsmLDAPauth 假设用户组关系存储在组项中。每个组成员的目录用户名(例如,uid)作为单独的值存储。

如果没有指定,则使用 OpenLDAP 默认的 memberuid

用户容器

这用于指定目录基础中用户容器的相对区分名称(RDN)。例如,如果所有用户都在由 DN ou=Users,dc=domain,dc=tld 表示的组织单元中,则用户容器的 RDN 将是 ou=Users

此参数是可选的;没有默认值。

如果目录环境有用户对象的容器,则强烈建议使用此设置。

组容器

这用于指定目录基础中组容器的 RDN。例如,如果所有组都在由 DN ou=Groups,dc=domain,dc=tld 表示的组织单元中,则用户容器的 RDN 将是 ou=Groups

如果没有指定,则不单独为组对象制定 DN,而是映射到目录的基础 DN。

如果应用了组成员资格限制,并且如果组对象在特定的容器中(不在目录基础中),则应在此处指定组容器 RDN,否则身份验证将始终失败。

LDAP 版本

这用于指定与目录服务通信时使用的 LDAP 协议版本。可能的选项是 23

如果没有指定,则使用默认的 3。LDAP v2 协议在 2003 年被弃用(RFC3494)。

基于角色的授权

PsmLDAPauth 为经过身份验证的用户提供基于角色的访问。

默认角色

这适用于在数据库的用户表中找不到的目录身份验证用户。

此操作由模块仅执行一次(或者如果用户被从数据库的用户表中删除),因为后续的身份验证循环将始终在表中找到用户。

如果需要更改用户的权限,必须在 PHP Server Monitor 的用户配置界面中更新他们的角色。

逻辑

PsmLDAPauth 由主 psmldapauth.php 文件组成,该文件控制模块的逻辑流程,以及两个独立的辅助脚本:

01. phpLDAPauth 用于与目录服务交互;02. phpDBauth 用于与数据库交互;

身份验证逻辑流程如下:

01. 用户在 PHP Server Monitor 登录界面输入凭据;02. PHP Server Monitor 将这些凭据传递给本地的 User 服务库。03. 本地 User 服务库从数据库中提取目录配置,并将此配置与登录凭据一起传递给 psmldapauth.php;03. psmldapauth.php 将这些凭据首先传递给请求中的 phpLDAPauth,同时附带目录主机和配置;04. phpLDAPauth 使用这些凭据绑定到目录服务,并在请求的情况下检查组成员资格;05. phpLDAPauth 将结果返回给 psmldapauth.php;06. psmldapauth.php 然后将已认证的用户详细信息发送给 phpDBauth,并附带数据库主机和配置;07. phpDBauth 在数据库表中查找用户;

1. If user is not found then it adds the user to the table and applies the default role (specified in the directory configuration);
2. If it finds the user then it takes no action in the database table;

08. 本地 User 服务库接管并登录用户到应用程序;

必须通过 PHP Server Monitor 的权限和授权方法以及用户表来管理对数据的访问。

已知限制

  1. 请参阅当前开放的 问题
  2. 请参阅那些 不会修复 的问题
  3. 请参阅 先决条件 的限制

支持

有关安装、配置和更多附加选项的更多信息,请参阅文档维基。

可以通过将布尔值 $GLOBALS['bl_DebugSwitch'] 设置为 TRUE 来启用调试。

$GLOBALS['bl_DebugSwitch'] = TRUE ;

有关所有其他问题、查询、建议和评论,请在此页面上方的链接处创建问题。

贡献

请随时克隆/分叉并通过拉取请求进行贡献。也欢迎捐赠,只需在此页面上方的链接处创建一个问题即可。

请联系以获取更多信息。

环境

已知兼容的平台和软件堆栈

  • 服务器操作系统
    • Debian 7 Wheezy
    • Debian 8 Jessie
    • Debian 10 Buster
    • Ubuntu 14.04
  • 客户端操作系统
    • Debian Wheezy
    • Debian Jessie
    • Windows 7
  • Web 服务器
    • Apache 2.2
    • Apache 2.4
    • Caddy 2.2
    • NGINX 1.14
  • PHP
    • 5.4
    • 5.5
    • 5.6
    • 7.0
    • 7.3
    • 7.4
  • 目录服务器
    • OpenLDAP 2.4
    • Active Directory (包括 DSLDS) 在 Windows Server 2012 上
  • 数据库服务器
    • MySQL 5.4
    • MySQL 5.5
    • MariaDB 10.3

许可

版权 (C) MMXVII~MMXXII viharm

本程序是免费软件:您可以按照自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,许可证版本为3,或(根据您的选择)任何更高版本。

本程序是在希望它有用的希望下分发的,但没有任何保证;甚至没有关于适销性或特定用途的隐含保证。有关详细信息,请参阅GNU通用公共许可证。

您应该已收到与此程序一起提供的GNU通用公共许可证副本。如果没有,请参阅https://gnu.ac.cn/licenses/

请参阅附带的 [LICENSE][LICENSE?at=master] 文件。

参考文献

PHP Server Monitor 用户身份验证逻辑

致谢

工具

Kint

Kint 调试库(《http://kint-php.github.io/kint/》),在MIT许可证下使用

版权所有 (c) 2013 Jonathan Vollebregt(jnvsor at gmail dot com),Rokas Šleinius(raveren at gmail dot com)

实用工具

Codiad

Codiad 基于Web的IDE(《https://github.com/Codiad/Codiad》),在MIT风格许可证下使用。

版权所有 (c) Codiad & Kent Safranski(codiad.com)

CodeGit

CodeGitCodiadGit 插件(《https://github.com/Andr3as/Codiad-CodeGit》),在MIT风格许可证下使用。

版权所有 (c) Andr3as andranode@gmail.com

VS Code

Visual Studio Code 代码编辑器,在Microsoft 软件许可证下使用。

Kate

文本编辑器,在GNU Lesser General Public Licence Version 2下使用。

版权所有 (c) 2000-2019 The Kate Authors

Ungit

UngitGit 客户端(《https://github.com/FredrikNoren/ungit》),在MIT许可证下使用

版权所有 (C) Fredrik Norén

GitLab

GitLab 代码仓库(gitlab.com)托管。

Packagist

Composer 包托管由Packagist(《https://packagist.org.cn》)提供。

指导