Wordpress 的 SAML SSO 解决方案

安装: 50

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 9

分支: 0

开放问题: 0

类型:wordpress-plugin

v1.0.2 2020-10-29 07:59 UTC

This package is auto-updated.

Last update: 2024-08-29 05:30:39 UTC


README

Contributors Forks Stargazers Issues License

Logo

SAML SSO

Wordpress 的 SAML SSO 插件
报告错误 · 请求功能

目录

关于 SAML SSO

WordPress 的 SAML SSO 登录插件。此插件将添加 SAML SSO 运行所需的 3 个端点。

/saml/acs
/saml/logout
/saml/metadata

注意:当前仅通过程序调用,请参阅 使用方法 以获取说明。

构建工具

入门

要获取本地副本并启动,请按照以下步骤操作。

先决条件

安装

  1. 克隆仓库
git clone https://github.com/helsingborg-stad/saml-sso.git
  1. 安装 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_MAPPINGSAML_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');
}

路线图

请参阅 开放问题,获取建议功能(和已知问题)的列表。

贡献

贡献使开源社区成为一个如此美妙的学习、灵感和创造的地方。您所做出的任何贡献都将被 高度赞赏

  1. 分支项目
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 提交您的更改(git commit -m 'Add some AmazingFeature'
  4. 将更改推送到分支(git push origin feature/AmazingFeature
  5. 打开 Pull Request

许可

MIT 许可证 下分发。

鸣谢