cicnavi/simplesamlphp-module-profilepage

SimpleSAMLphp 配置页面模块

v2.0.0 2023-11-17 14:05 UTC

This package is auto-updated.

Last update: 2024-09-17 15:59:33 UTC


README

Test

simplesamlphp-module-profilepage

SimpleSAMLphp 提供用户“配置页面”和配置页面功能的模块,使用 SimpleSAMLphp 认证处理过滤器功能。

功能

  • 启用对认证事件的跟踪,同步(在认证事件期间)或异步(使用 SimpleSAMLphp Cron 功能在单独的进程中)
  • 为最终用户提供端点,以检查他们的个人信息、连接的服务提供者的摘要以及认证事件列表
  • 自带默认的 DBAL 后端存储,这意味着可以使用以下数据库供应商:MySQL、Oracle、Microsoft SQL Server、PostgreSQL、SQLite。可以通过遵循适当的接口添加其他后端存储。
  • 自带设置程序,可设置后端存储。在 Doctrine DBAL 的情况下,这意味着运行 SQL 迁移,在配置的数据库中创建适当的表。
  • 每个后端存储连接都可以有主从配置(主用于写入,从用于读取)
  • 具有跟踪功能,可以将认证数据持久化到后端存储。目前,模块可以跟踪连接的服务和认证事件。可以通过遵循适当的接口添加其他跟踪器。
  • 跟踪可以以两种方式运行
    • 同步 - 认证数据在认证事件期间持久化,通常涉及对后端存储的多个查询/插入/更新。
    • 异步 - 仅在认证事件期间持久化认证事件作业(对后端存储的单一插入)。使用这种方法,认证事件作业可以在使用 SimpleSAMLphp cron 模块的不同进程中稍后执行

安装

版本兼容性

可以使用 Composer 安装模块

composer require cicnavi/simplesamlphp-module-profilepage

在 config.php 中,搜索 "module.enable" 键,并将 'profilepage' 设置为 true

// ...
'module.enable' => [
    'profilepage' => true,
    // ...
],
// ...

根据使用功能的不同,模块还需要

  • ext-redis:如果使用 PhpRedis 作为存储

配置

与 SimpleSAMLphp 模块一样,将模块模板配置复制到 SimpleSAMLphp 配置目录

cp modules/profilepage/config-templates/module_profilepage.php config/

下一步是配置文件 config/module_profilepage.php 中的可用选项。每个选项都有说明,但以下是对整体概念的描述。

模块可以配置为仅显示当前用户数据,不进行任何会计操作。但是,模块可以配置为跟踪以下数据

  • 连接的组织 - 通过设置 ModuleConfiguration::OPTION_PROVIDER_FOR_CONNECTED_SERVICES 选项。
  • 活动 - 通过设置 ModuleConfiguration::OPTION_PROVIDER_FOR_ACTIVITY 选项。

模块自带一些 Doctrine DBAL 具备的类,可用于这些目的。以下是一个示例配置摘录,它将启用存储连接服务的当前(最新)数据以及认证事件的版本化数据,包括版本化的 Idp 和 SP 元数据以及版本化的用户属性

use SimpleSAML\Module\profilepage\ModuleConfiguration;
use SimpleSAML\Module\profilepage\Data\Trackers;
use SimpleSAML\Module\profilepage\Data\Providers;

// ...
ModuleConfiguration::OPTION_PROVIDER_FOR_CONNECTED_SERVICES =>
    Providers\ConnectedServices\DoctrineDbal\CurrentDataProvider::class,
ModuleConfiguration::OPTION_PROVIDER_FOR_ACTIVITY =>
        Providers\Activity\DoctrineDbal\VersionedDataProvider::class,
// ...

处理类型

部署者可以选择在认证事件期间(同步)或在单独的进程中(例如)执行会计处理

use SimpleSAML\Module\profilepage\ModuleConfiguration;
use SimpleSAML\Module\profilepage\ModuleConfiguration\AccountingProcessingType;

// ...
ModuleConfiguration::OPTION_ACCOUNTING_PROCESSING_TYPE =>
    ModuleConfiguration\AccountingProcessingType::VALUE_ASYNCHRONOUS,
// ...

如果处理类型是异步的,那么部署者还必须配置与作业存储相关的选项

  • 用于存储和从后端存储检索作业的作业存储类
  • 作业运行器的会计 cron 标签
  • Cron 模块配置(如果使用的标签与 cron 模块中可用的标签不同,这是默认情况)

对于每个跟踪器或作业存储,必须设置“连接密钥”。连接密钥决定了在跟踪器/作业存储初始化过程中将转发哪些连接参数。

同时查看/编辑所有其他配置选项,并设置适当的值。

运行设置

在您已配置 config/module_profilepage.php 中的所有内容后,请转到 SimpleSAMLphp 管理员 > 配置页面。在那里您将找到一个链接“配置文件页面状态”,这将带您到模块配置概述页面。

如果配置的跟踪器/作业存储需要任何设置,您将看到一个“运行设置”按钮,因此请继续点击它。在默认的 Doctrine DBAL 跟踪器/作业存储的情况下,设置将运行所有用于在数据库中创建必要表的迁移类。

设置完成后,您将看到一个“配置文件”链接,最终用户可以使用它来查看他们的活动。

添加身份验证处理过滤器

开始使用配置的跟踪器类/作业存储跟踪用户数据的最后一步是将 profilepage 模块中的身份验证处理过滤器添加到 SimpleSAMLphp 配置的正确位置。以下是一个在 config/config.php 中为所有 IdP 全局设置的示例

// ...
'authproc.idp' => [
        // ... 
        1000 => 'profilepage:Accounting',
    ],
// ...

作业运行器

如果会计处理是异步的,则必须使用作业运行器来处理在身份验证事件期间创建的作业。

可以使用SimpleSAMLphp Cron 模块执行作业运行器。如 Cron 文档所示,可以使用 HTTP 或 CLI 调用 cron 标签。对于作业运行器来说,使用 CLI 是首选方式,因为作业运行器可以长时间运行,甚至无限期地运行。但是,您也可以使用 HTTP 版本进行测试执行,在这种情况下,作业运行器的最大执行时间将对应于 'max_execution_time' INI 设置。

在任何给定时间点只能运行一个作业运行器实例。通过维护内部状态,作业运行器首先会检查是否有另一个作业运行器正在运行。如果有,则后者将简单地退出,让活动的作业运行器完成其工作。这样,您可以在任何时候调用 cron 标签,因为只有一个作业运行器会始终处于活动状态。

OpendID Connect 集成

此模块也可以用作 OIDC 模块https://github.com/simplesamlphp/simplesamlphp-module-oidc的身份验证处理过滤器,这意味着它还可以跟踪 OIDC 身份验证事件。此外,如果启用连接服务选项,用户将能够在用户界面中撤销特定服务的任何活动访问/刷新令牌。

可以在 OIDC 模块配置中添加会计身份验证处理过滤器,具体请参阅 OIDC 模块文档。

测试

运行 phpcs、psalm 和 phpunit

composer pre-commit