pressbooks / pressbooks-shibboleth-sso
Requires
- php: ^8.1
- composer/installers: ^2.1
- onelogin/php-saml: ^4.1
- phpcompatibility/php-compatibility: ^9.3
Requires (Dev)
- pressbooks/coding-standards: ^1.1
- yoast/phpunit-polyfills: ^1.1.0
- dev-dev
- 2.5.1
- 2.5.0
- 2.4.1
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.0
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-dependabot/composer/composer-dev-dependencies-7acf4b2c6d
- dev-dependabot/npm_and_yarn/npm_and_yarn-9b148c16b4
- dev-chore/update-translations-d3155dd497
- dev-chore/update-pot-file
- dev-production
This package is auto-updated.
Last update: 2024-09-09 17:05:46 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 单点登录集成。
描述
插件,用于将 Pressbooks 与 SAML2 单点登录服务集成。(Shibboleth,Microsoft ADFS,Google 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
的日志组。
屏幕截图
变更日志
有关更多信息,请参阅 变更日志 文件。