cesnet/simplesamlphp-module-proxystatistics

SimpleSAMLPHP 统计模块

v8.5.0 2024-03-22 12:23 UTC

README

maintenance status: end of life

该项目已达到生命周期的终点,这意味着将不再添加新功能。安全补丁和重要的错误修复将于2024年结束。请查看RCIAM METRICS

描述

simpleSAMLphp 的模块,显示代理 IdP/SP 统计数据

贡献

此存储库使用 常规提交

任何显著更改行为(以向后不兼容的方式)或需要配置更改的更改都必须标记为 BREAKING CHANGE。

可用范围

  • 设计
  • 身份验证过程过滤器
    • 统计
  • ...

安装

一旦您安装了 SimpleSAMLphp,安装此模块就非常简单。首先,如果您还没有,需要下载 Composer。安装 Composer 后,只需在 SimpleSAMLphp 安装根目录中执行以下命令:

php composer.phar require cesnet/simplesamlphp-module-proxystatistics

配置

  1. 安装 MySQL 数据库并创建用于统计和用户的数据库。
  2. 为此数据库运行脚本以创建表。脚本位于 config-templates/tables.sql。
  3. 将 config-templates/module_proxystatistics.php 复制到您的配置文件夹并填写它。
  4. 根据模式进行配置
  • PROXY - 收集来自每个身份提供者和访问服务的登录次数数据;对于 PROXY 模式,从 Perun 模块配置 IdPAttribute 过滤器以获取源 IdPName 从 IdP 元数据
    50 => [
        'class' => 'perun:IdPAttribute',
        'attrMap' => [
            'name:en' => 'sourceIdPName',
        ],
    ],
    // where 50 is priority (for example, must not be used for other modules)
  • IDP - 收集通过给定身份提供者访问服务的统计数据;对于 IDP 模式,在 module_proxystatistics.php 中配置实体 ID 和名称
    'IDP' => [
        'id' => '',
        'name' => '',
    ],
  • SP - 收集用于访问给定服务的身份提供者的统计数据;对于 SP 模式,在 module_proxystatistics.php 中配置实体 ID 和名称
    'SP' => [
        'id' => '',
        'name' => '',
    ],
  • MULTI_IDP - 与 IDP 模式类似,在一个数据库中存储更多的身份提供者;对于 MULTI_IDP 模式,在从其中获取统计数据的每个 module_proxystatistics.php 中配置实体 ID 和名称
    'IDP' => [
        'id' => '',
        'name' => '',
    ],
  1. 配置 proxystatistics 过滤器
    50 => [
        'class' => 'proxystatistics:Statistics',
    ],
    // where 50 is priority (for example, must not be used for other modules)
  1. 添加到 config.php
'instance_name' => 'Instance name',

通过 API 编写

配置

添加以下内容(并调整凭据)以通过 API 编写(以下为示例请求)。支持的方法是 POST,PUT

  'apiWriteEnabled' => true,
  'apiWriteUsername' => 'api_writer',
  'apiWritePasswordHash' => password_hash('ap1Wr1T3rP@S$'),

示例请求

curl --request POST \
  --url https://proxy.com/proxy/module.php/proxystatistics/writeLoginApi.php \
  --header 'Authorization: Basic encodedCredentials' \
  --header 'Content-Type: application/json' \
  --data '{
	"userId": "[email protected]",
	"serviceIdentifier": "https://service.com/shibboleth",
	"serviceName": "TEST_SERVICE",
	"idpIdentifier": "https://idp.org/simplesamlphp",
	"idpName": "TEST_IDP"
}'