pressbooks/pressbooks-shibboleth-sso

此软件包已被废弃且不再维护。作者建议使用 pressbooks/pressbooks-saml-sso 软件包。

Pressbooks 的 Shibboleth 单点登录集成。

安装: 8

依赖: 0

建议者: 0

安全: 0

星标: 3

关注者: 10

分支: 1

开放问题: 13

类型:wordpress-plugin

2.5.1 2024-06-12 15:33 UTC

README

贡献者:conner_bw, greatislander, richard015ar, steelwagstaff, arzola 标签:pressbooks, saml, saml2, sso, shibboleth 至少需要:6.5 测试到:6.5

稳定标签:2.5.1

需要 PHP:8.1 许可证:GPLv3 或更高 许可证 URI:https://gnu.ac.cn/licenses/gpl-3.0.html

Pressbooks 的 SAML2 单点登录集成。

描述

Packagist GitHub release Travis Codecov

插件,用于将 Pressbooks 与 SAML2 单点登录服务集成。(ShibbolethMicrosoft ADFSGoogle Apps 等.)

尝试登录 Pressbooks 的用户将被重定向到 Shibboleth 或 SAML2 身份提供者。在验证用户凭据后,他们将被重定向回 Pressbooks 网络。如果我们通过 UID(存储在 user_meta 表中)匹配到 Pressbooks 用户,则用户被视为有效并允许访问。如果没有匹配,则尝试通过电子邮件(并在 user_meta 表中存储成功匹配以备下次使用)匹配 Pressbooks 用户。如果用户在 Pressbooks 中没有账户,则可以创建新用户或根据配置拒绝访问。

限制:此插件不能启用多边 Shibboleth 的身份验证。对于使用单一 IdP 的非联邦、双边配置,请使用此插件。

安装

composer require pressbooks/pressbooks-saml-sso

或者,从发布页面下载最新版本并将其解压缩到您的 WordPress 插件目录中:https://github.com/pressbooks/pressbooks-saml-sso/releases

然后,创建必要的证书

cd vendor/onelogin/php-saml/certs
openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out sp.crt -keyout sp.key

然后,在网路级别激活并配置插件。

安全考虑

vendor/onelogin/php-saml/certs 中生成证书(不进行其他更改),将使恶意用户(即 https://path/to/vendor/onelogin/php-saml/certs/sp.crt)能够访问。此外,当使用 composer update 或类似命令更新软件包时,您的证书可能面临被删除的风险。合格的系统管理员必须确保证书不可从互联网访问且不会被删除。强烈建议您通过配置变量传递证书。示例

add_filter( 'pb_saml_auth_settings', function( $config ) {
	$config['sp']['x509cert'] = file_get_contents( '/path/to/sp.key' );
	$config['sp']['privateKey'] = file_get_contents( '/path/to/sp.crt' );
	return $config;
} );

或者

define( 'PHP_SAML_SP_KEY_PATH', '/path/to/sp.key' );
define( 'PHP_SAML_SP_CERT_PATH', '/path/to/sp.crt' );

IdP 设置

插件激活后,在“集成”下的“网络管理界面”中添加了子菜单项(“SAML2”)。这会引导到 SAML2 设置页面。您可以从该页面下载元数据 XML。

插件要求响应的断言元素被签名。

插件在响应中查找以下属性

  • 需要:urn:oid:0.9.2342.19200300.100.1.1(samAccountName 或等效,理想情况下带有友好名称 uid
  • 强烈推荐:urn:oid:0.9.2342.19200300.100.1.3(email-address 或等效,理想情况下带有友好名称 mail)。如果没有值可用,则回退到 uid@127.0.0.1
  • 可选:urn:oid:1.3.6.1.4.1.5923.1.1.1.6(eduPersonPrincipalName 或等效)。对于特定用户的首次启动,如果邮件无法匹配现有人员,并且此值存在,我们将尝试使用它。

可以过滤电子邮件,例如:add_filter( 'pb_integrations_multidomain_email', function( $email, $uid, $plugin ) { /* 自定义用例,返回 $email */ }, 10, 3 );

因为这个插件使用了杰出的 onelogin/php-saml 工具包,许多其他配置变量可以被调整

发送日志

如果你使用 AWS 并想在服务器上记录 SAML 尝试,你需要在托管你的 Pressbooks 实例的服务器上定义一些环境变量。

AWS S3

定义以下环境变量

 LOG_LOGIN_ATTEMPTS (setting this value to true will enable this feature at the infrastructure level)
 AWS_ACCESS_KEY_ID
 AWS_SECRET_ACCESS_KEY
 AWS_S3_OIDC_BUCKET
 AWS_S3_REGION
 AWS_S3_VERSION

在这些变量被正确定义之后,关于 SAML 登录尝试的基本信息将被记录到你的 S3 桶中。每月将创建一个新的 CSV 文件,以便日志保持可读性。日志存储将发生在如下文件夹结构中 S3 桶 > saml_logs > {环境} > {通过 wp_hash 函数哈希的网络 URL} > {YYYY-MM} > saml_logs.log

AWS CloudWatch 日志

定义以下环境变量

 LOG_LOGIN_ATTEMPTS (setting this value to true will enable this feature at the infrastructure level)
 AWS_ACCESS_KEY_ID
 AWS_SECRET_ACCESS_KEY
 AWS_S3_REGION
 AWS_S3_VERSION

在这些变量被正确定义之后,关于 SAML 登录尝试的基本信息将以 JSON 格式记录到你的 AWS CloudWatch 日志服务中。你需要创建一个新的名为 pressbooks-logs 的日志组。

屏幕截图

SAML2 Administration.

Metadata XML.

变更日志

有关更多信息,请参阅 变更日志 文件。