pressbooks / pressbooks-saml-sso
Pressbooks 的 Shibboleth 单点登录集成。
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 用户,则用户被视为有效并被允许访问。如果没有匹配项,则尝试通过电子邮件匹配 Pressbooks 用户(并将成功的匹配项存储在 user_meta 表中供下次使用)。如果用户在 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 或等效,理想情况下与 FriendlyNameuid
相匹配) - 强烈推荐:
urn:oid:0.9.2342.19200300.100.1.3
(email-address 或等效,理想情况下与 FriendlyNamemail
相匹配)。如果没有可用值,则回退到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 > {ENVIRONMENT} > {通过 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
的新日志组。
屏幕截图
变更日志
请参阅 变更日志 文件获取更多信息。