helsingborg-stad / sso-saml
Wordpress 的 SAML SSO 解决方案
v1.0.2
2020-10-29 07:59 UTC
Requires
- onelogin/php-saml: ^3.4
This package is auto-updated.
Last update: 2024-08-29 05:30:39 UTC
README
SAML SSO
Wordpress 的 SAML SSO 插件
报告错误 · 请求功能
目录
关于 SAML SSO
WordPress 的 SAML SSO 登录插件。此插件将添加 SAML SSO 运行所需的 3 个端点。
/saml/acs
/saml/logout
/saml/metadata
注意:当前仅通过程序调用,请参阅 使用方法 以获取说明。
构建工具
入门
要获取本地副本并启动,请按照以下步骤操作。
先决条件
- Composer
安装说明
安装
- 克隆仓库
git clone https://github.com/helsingborg-stad/saml-sso.git
- 安装 Composer 包
composer install
配置
配置是通过 wp-config.php
中的常量完成的
PHP-SAML 常量直接关联到 PHP-SAML 需求。
有关这些设置的更多信息,请参阅 PHP SAML 的文档。
示例配置
// NOTE Never place certificates below the root web folder!
$idpCertificateFile = '/etc/certs/idp-cert.cer';
$spCertificateFile = '/etc/certs/sp-cert.cer';
$spCertificateKeyFile = '/etc/certs/sp-cert.key';
define('SAML_SP_ENITITY_ID', 'https://www.example.com/saml/metadata');
define('SAML_SP_ACS_URL', 'https://www.example.com/saml/acs');
define('SAML_IDP_ENTITY_ID', 'https://www.example.com/adfs/services/trust');
define('SAML_IDP_SSO_URL', 'https://www.example.com/adfs/ls/');
define('SAML_IDP_SLS_URL', 'https://www.example.com/adfs/ls/');
if (file_exists($idpCertificateFile)) {
define('SAML_IDP_CERTIFICATE', file_get_contents($idpCertificateFile));
}
if (file_exists($spCertificateFile)) {
define('SAML_SP_CERTIFICATE', file_get_contents($spCertificateFile));
}
if (file_exists($spCertificateKeyFile)) {
define('SAML_SP_CERTIFICATE_KEY', file_get_contents($spCertificateKeyFile));
}
必需的 PHP-SAML 常量
以下常量需要在您的 wp-config.php
文件中设置。
SAML_SP_ENITITY_ID
SAML_SP_ACS_URL
SAML_SP_CERTIFICATE
SAML_SP_CERTIFICATE_KEY
SAML_IDP_ENTITY_ID
SAML_IDP_SSO_URL
SAML_IDP_SLS_URL
可选的 PHP-SAML 常量
在您的 wp-config.php
文件中设置的可选常量和它们的默认值。
SAML_STRICT => true
SAML_DEBUG => false
SAML_SP_ACS_BINDING => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
SAML_SP_NAME_ID_FORMAT => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
SAML_IDP_SSO_BINDING => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
SAML_IDP_SLS_BINDING => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
SAML_IDP_CERTIFICATE => null,
SAML_SECURITY_REQUESTED_AUTHN_CONTEXT => false,
SAML_SECURITY_SIGNATURE_ALGORITHM' => 'http://www.w3.org/2001/04/xmlenc#sha256',
SAML_SECURITY_DIGEST_ALGORITHM' => 'http://www.w3.org/2001/04/xmlenc#sha256',
SAML_SECURITY_LOWERCASE_URL_ENCODING => true,
其他 PHP-SAML 设置。
可以通过 saml-sso-settings
过滤器添加其他 PHP-SAML 设置。
其他常量
存在两个用于映射配置的常量。
在 wp-config.php
中用常量 SAML_ATTRIBUTES_MAPPING
和 SAML_AD_GROUP_ROLE_MAPPING
覆盖它们。
默认值
SAML_ATTRIBUTES_MAPPING = [ 'username' => 'http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname', 'first-name' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname', 'last-name' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname', 'email' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress', 'ad-groups' => 'http://schemas.xmlsoap.org/claims/Group', ]; SAML_MAP_TO_AD_GROUP = true; SAML_AD_GROUP_ROLE_MAPPING = [ 'Domain Users' => 'subscriber', 'Domain Admins' => 'administrator' ];
使用方法
配置完成后,插件激活后,以下代码可用于触发 SAML SSO 登录。
if (class_exists('\SAMLSSO\Client')) { $client = new \SAMLSSO\Client(); // Supply where to redirect after login. $client->authenticate('https://www.example.com/redirect'); }
路线图
请参阅 开放问题,获取建议功能(和已知问题)的列表。
贡献
贡献使开源社区成为一个如此美妙的学习、灵感和创造的地方。您所做出的任何贡献都将被 高度赞赏。
- 分支项目
- 创建您的功能分支(
git checkout -b feature/AmazingFeature
) - 提交您的更改(
git commit -m 'Add some AmazingFeature'
) - 将更改推送到分支(
git push origin feature/AmazingFeature
) - 打开 Pull Request
许可
在 MIT 许可证 下分发。