jelix/multiauth-module

模块用于 Jelix,允许对多个登录/密码认证提供者进行身份验证。

安装: 197

依赖: 0

建议: 0

安全性: 0

星星: 0

关注者: 3

分支: 1

开放问题: 3

类型:jelix-module

v1.2.2 2023-10-09 09:51 UTC

This package is auto-updated.

Last update: 2024-09-09 11:44:35 UTC


README

这是一个 Jelix 模块,提供了一个 jAuth 插件,允许对多个登录/密码认证提供者进行身份验证。

安装

此模块适用于 Jelix 1.6.21 及更高版本。它替换了 ldapdao 模块,并且与 jauth、jauthdb、jauthdb_admin 和 jcommunity 模块兼容。

使用 Jelix 1.7 和 1.8 安装文件

您应该使用 Composer 安装此模块。在 shell 中运行以下命令

composer require "jelix/multiauth-module"

启动您的应用程序配置器以启用该模块

php yourapp/dev.php module:configure multiauth

php yourapp/install/installer.php

使用 Jelix 1.6.21 安装文件

multiauth 目录复制到您的应用程序的 modules/ 目录中。

接下来,您必须告诉 Jelix 您想使用此模块。在 mainconfig.ini.php 文件(在 yourapp/var/config/ 中)中声明它。

[modules] 部分,添加

multiauth.access=1

以下模块是必需的:jacl2、jauth、jauthdb。在同一部分中,确认它们已被激活

jacl2.access=1
jauth.access=2
jauthdb.access=1

如果您使用的是 jCommunity 模块,则不应激活 jauthdb,因此保留 jauthdb.access=0

在命令行中,启动

php yourapp/install/installer.php

配置

使用 auth.coord.ini.php

您必须修改配置文件 auth.coord.ini.php

首先,设置 driver=multiauth

然后,您应该添加一个 multiauth 部分

[multiauth]
; name of the dao to get user data
dao = "jauthdb~jelixuser"

; profile to use for jDb 
profile = "jauth"

; list of authentication providers
providers[]=ldap:multiauth_ldap
providers[]=dbdao:centraldb
providers[]=dbaccounts

; name of the form for the jauthdb_admin module
form = "jauthdb_admin~jelixuser"

; path of the directory where to store files uploaded by the form (jauthdb_admin module)
; should be related to the var directory of the application
uploadsDirectory= ""

; if set to on, when a user login successfully, an account will be created automatically
automaticAccountCreation = on

; required. Internal use for jAuth. Don't touch it.
compatiblewithdb = on

; you should set it to allow password storage migration, if you have an old
; users table.
; @deprecated
password_crypt_function = sha1

提供者列表是用于尝试通过用户的登录/密码对用户进行身份验证的插件列表,一个接一个。

模块提供了三个提供者

  • ldap:对 LDAP 进行用户身份验证。
  • dbaccounts:使用存储在账户表中的登录/密码(由 dao 配置参数中指定的 dao 使用的表)检查提供的登录/密码。
  • dbdao:使用存储在不是账户表中的表中的登录/密码检查提供的登录/密码。

对于 providers 配置参数,每个条目都是 <plugin name>:<configuration section>。因此,在上面的示例中,ldap 提供者的配置位于 multiauth_ldap 部分。您应该有

[multiauth_ldap]
; profile to use for ldap
ldapprofile = "multiauthldap"

对于 dbaccounts,没有指定配置部分,因为它不可配置。

使用 localconfig.ini.php

您可能想要从 auth.coord.ini.php 中更改一些配置值,以适应您的应用程序的特定实例。multiauth 插件能够从 localconfig.ini.php 加载其配置,而不仅仅是从 auth.coord.ini.php,因此您不必修改 auth.coord.ini.php

在您的 localconfig.ini.php 中,创建一个 multiauth 部分。它可以包含所有可以在 auth.coord.ini.php 中的 multiauth 中设置的参数。来自 localconfig.ini.php 的参数将覆盖来自 auth.coord.ini.php 的参数。

提供者配置部分具有相同的行为。

配置 ldap 提供者

参阅 LDAP.md 了解如何为 ldap 插件填写配置。

配置 dbaccounts 提供者

dbaccounts 插件不需要配置,这就是为什么没有部分名称的原因。

配置 dbdao 提供者

dbdao 插件需要一个简单的配置部分,包含一个 dao 和一个 profile 参数,这些参数用于访问包含登录/密码的表。警告:它不能与 multiauth 插件使用的同一个 dao/profile!否则您可能会遇到一些安全问题。

[centraldb]
; dao declaring the mapping to the authentication table. It should have a
; "password" and a "login" properties.
dao="main~central_auth_db"
; profile for jDb to access to the database containing the authentication table
profile="centraldb" 

多次使用相同的提供者

您可以多次使用提供者。例如,您可能希望使用两个不同的 ldap 来验证您的用户

providers[]=ldap:ldapserver1
providers[]=ldap:ldapserver2

显然您需要配置两个不同的 ldap 提供者部分

[ldapserver1]
ldapprofile = "ldapserver1"
[ldapserver2]
ldapprofile = "ldapserver2"