simplesamlphp / simplesamlphp-module-aggregator2
SimpleSAMLphp的SAML 2.0元数据聚合器。
Requires
- php: >=7.4 || ^8.0
- simplesamlphp/composer-module-installer: ^1.3.2
- simplesamlphp/simplesamlphp: ^2.0.0-rc2
Requires (Dev)
This package is auto-updated.
Last update: 2024-08-27 06:56:03 UTC
README
这是一个SimpleSAMLphp元数据聚合模块。它旨在保留大多数常见的元数据项,并尝试保留未知元素。元数据来源将被解析和重建,因此原始来源与生成的元数据之间可能存在微小差异。具体来说
- 将从每个签名的元数据来源中删除签名。
- 所有来源都将包装在EntitiesDescriptor元素中。
注意:此聚合器仅与XML元数据一起工作,并且独立于SimpleSAMLphp的其他部分执行其工作,例如metarefresh模块。
安装
安装SimpleSAMLphp后,安装此模块非常简单。只需在SimpleSAMLphp安装根目录中执行以下命令
vendor/bin/composer require simplesamlphp/simplesamlphp-module-aggregator2:dev-master
其中 dev-master
指示Composer从Git存储库安装 master
分支。如果您想使用模块的稳定版本,请参阅发布。
要使用此模块,启用aggregator2模块:在 config.php
中搜索 module.enable
键,将 aggregator2
设置为true
'module.enable' => [ 'aggregator2' => true, … ],
配置
此模块通过 config/module_aggregator2.php
配置文件进行配置。一个示例文件位于 modules/aggregator2/config-templates/
cp modules/aggregator2/config-templates/module_aggregator2.php config/
配置文件包含配置数组中的一个或多个聚合器。配置数组中每个项目的索引给出聚合器的标识符。
聚合器条目配置
聚合器可以使用以下选项进行配置
-
sources
:数组描述了我们应该从中下载元数据的来源。 -
cron.tag
:可以用于运行周期性更新。只有当您启用了元数据缓存时,它才会很有用。 -
cache.directory
:聚合器将缓存下载和生成的元数据的目录路径。此目录必须可由Web服务器写入。 -
cache.generated
:生成的元数据将被缓存的秒数。注意:如果未设置此选项,则不会缓存生成的元数据。
-
valid.length
:生成的元数据应有效的秒数。这用于设置生成的元数据的validUntil
属性。默认为一周。注意:此选项的值必须小于这里的值,否则您将返回过时的元数据。
-
ssl.cafile
:此选项启用通过HTTPS获取元数据时的服务器证书验证。它必须指向包含一个或多个有效CA证书的PEM文件的路径。路径可以是绝对路径或相对于cert
目录的相对路径。注意:此选项可以针对每个元数据来源进行覆盖。
-
sign.privatekey
:用于签名的私钥,格式为PEM。私钥的路径可以是绝对路径或相对于cert
目录的相对路径。如果您不想签名生成的元数据,请跳过此选项或将它设置为NULL
。 -
sign.privatekey_pass
:加密私钥的密码。如果未设置此选项,则假定私钥未加密。 -
sign.certificate
:包含对应私钥的公钥的证书,格式为PEM。证书的路径可以是绝对路径,也可以是相对于cert
目录的相对路径。注意:此证书将包含在生成的元数据中。
-
sign.algorithm
:用于签名结果的算法。支持以下算法:-
http://www.w3.org/2000/09/xmldsig#rsa-sha1
-
http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
-
http://www.w3.org/2001/04/xmldsig-more#rsa-sha384
-
http://www.w3.org/2001/04/xmldsig-more#rsa-sha512
注意:默认值为
http://www.w3.org/2000/09/xmldsig#rsa-sha256
。为了向后兼容,可以将其设置为http://www.w3.org/2000/09/xmldsig#rsa-sha1
,但是,建议使用另一种算法,因为SHA1被认为已损坏。
-
-
RegistrationInfo
:允许指定关于生成的元数据注册者的信息。请参阅MDRPI扩展文档以获取更多信息。 -
exclude
:允许排除一个或多个实体,由它们的实体ID表示。可以是包含单个实体ID的字符串,也可以是包含要排除的所有实体ID的字符串数组。注意:此选项不会从缓存的元数据源中排除实体。它仅作为元数据聚合生成的默认配置,因此可以在每个请求中覆盖。
-
filter
:一个或多个集合,表示应在生成的元数据中包含的实体类型。根据实体的角色及其支持的协议执行过滤。可以是包含所需实体集的字符串,也可以是包含要过滤的所有不同集合的字符串数组。以下集合可用:-
saml2
:支持SAML 2.0协议的所有实体。 -
saml20-idp
:支持SAML 2.0协议的所有身份提供者。 -
saml20-sp
:支持SAML 2.0协议的所有服务提供者。 -
saml20-aa
:支持SAML 2.0协议的所有属性权威机构。注意:此选项不会过滤缓存的元数据源中的实体。它仅作为元数据聚合生成的默认配置,因此可以在每个请求中覆盖。
-
聚合源配置
-
url
:从该URL获取元数据的URL。 -
ssl.cafile
:此选项启用通过HTTPS获取元数据时的服务器证书验证。它必须指向包含一个或多个有效CA证书的PEM文件的路径。路径可以是绝对路径或相对于cert
目录的相对路径。注意:此选项覆盖聚合器根配置中具有相同名称的选项。
-
cert
:用于检查此元数据文档签名的证书,格式为PEM。证书的路径可以是绝对路径,也可以是相对于cert
目录的相对路径。注意:这不能是CA证书。不支持与CA证书(PKI)的验证。
检索聚合元数据
您将在SimpleSAMLphp的Web界面的联合选项卡中找到aggregator2模块的链接。在那里,您将能够查看您已配置的所有元数据聚合列表,并以不同的格式查看或下载它们。
通常,元数据聚合可以从以下位置下载:
http://<YOUR HOST>/simplesaml/modules.php/aggregator2/get?id=<aggregator-id>
其中,聚合器ID是您用作聚合器配置数组索引的标识符。此外,您可以使用以下参数自定义生成的元数据聚合:
-
exclude
:允许排除一个或多个实体,由它们的实体ID表示。如果需要指定多个实体,请使用以逗号分隔的实体ID列表。 -
filter
:允许通过指定实体类型或它们支持的协议的集合来过滤。如果您需要指定多个集合,请使用逗号分隔的列表。查看具有相同名称的配置选项,以获取所有支持的集合列表。
异步元数据更新
默认情况下,aggregator2
模块会在接收到请求时更新元数据。出于性能考虑,建议异步运行更新。通过这样做,聚合元数据将在后台生成。
要启用此功能,您必须使用cache.directory
选项配置一个缓存目录。此目录必须可由Web服务器写入。然后,您可以将生成的元数据的缓存设置启用,通过将cache.generated
选项设置为元数据应缓存的秒数。
现在您将有一个配置,该配置既缓存下载的元数据也缓存生成的元数据。但是,当用户访问聚合器端点时,它仍会更新元数据。为了在后台更新生成的元数据,您必须添加一个cron.tag
选项。此选项必须引用在module_cron.php
中配置的cron标签条目。一旦完成此操作,您的聚合元数据将在cron条目每次执行时更新。