詹姆斯·莫里森 / cloudflare-access-sso
通过 Cloudflare Access 方便 SSO 登录 WordPress。
Requires
- php: >=8.0
- firebase/php-jwt: ^6.8
README
Cloudflare Access SSO (单点登录) 是一个插件,用于方便 WordPress 的自动登录。该插件依赖于 Cloudflare 的授权,因此您必须仔细遵循此设置指南,以确保您的网站保持安全。有关进一步指导,请参阅 Cloudflare 文档:将网站添加到 Cloudflare。
注意:如果您目前不使用 Cloudflare 且不打算使用,此插件可能不适合您的网站。
Cloudflare Access 设置
为了使用 Cloudflare Access 进行 SSO,您必须创建一个应用程序,涵盖您想要保护站点的 wp-login.php
。没有其他 URL 需要保护才能使此功能正常工作,但为了更好的安全性,您可能希望包括其他 URL。注意,截至 2023 年 6 月,无法在一个应用程序中定义多个路径;目前,如果您还想要保护 /wp-admin
,则需要多个应用程序。
按照此指南创建 Cloudflare Access 应用程序:自托管应用程序
插件配置
需要在 wp-config.php
中设置两个常量(注意:未来版本将添加设置页面)
CF_ACCESS_TEAM_NAME
Cloudflare Access 团队名称 获取团队名称
- 打开零信任仪表板(见上文)
- 在左侧侧边菜单中导航到“设置”,然后单击“常规设置”
- 编辑团队域名 - 可编辑组件是团队名称(忽略后面的
.cloudflareaccess.com
)- 例如,如果保存后的值是
mysite.cloudflareaccess.com
,则团队名称是mysite
。
- 例如,如果保存后的值是
例如,对于 wp-config.php
:define( 'CF_ACCESS_TEAM_NAME', 'mysite' );
CF_ACCESS_AUD
Cloudflare Access 应用程序的应用程序受众(AUD)标记 获取应用程序受众(AUD)标记
- 打开零信任仪表板(见上文)
- 导航到访问 > 应用程序
- 选择应用程序,然后在弹出的模态中单击“配置”
- 在应用程序页面上,导航到“概述”选项卡
- 复制“应用程序受众(AUD)标记”值
例如,对于 wp-config.php
:define( 'CF_ACCESS_AUD', '12345-67890-12345-67890-12345-67890' );
注意:如果您有多个 Cloudflare Access 应用程序,确保 AUD 覆盖
wp-login.php
- 如果不覆盖,SSO 将无法正常工作。
CF_ACCESS_AUD
接受单个字符串(如上例所示)或字符串数组,如下所示
define( 'CF_ACCESS_AUD',
[
'12345-67890-12345-67890-12345-67890',
'54321-12345-54321-12345-54321-12345',
]
);
可选地,还可以设置四个额外的常量
CF_ACCESS_ATTEMPTS
通过 Cloudflare Access 登录的尝试次数。
默认值:(int)3
如果未设置。
CF_ACCESS_LEEWAY
授权头中允许的宽限秒数。
默认值:(int)60
如果未设置。
CF_ACCESS_CREATE_ACCOUNT
是否在用户不存在的情况下为(Cloudflare)认证用户创建账户 注意:这取决于您的 Cloudflare Access 应用程序的设置;如果您只允许“内部”用户,则“外部”用户将无法访问网站。
默认值:(bool)false
如果未设置。
CF_ACCESS_NEW_USER_ROLE
创建的用户账户的角色。需要 CF_ACCESS_CREATE_ACCOUNT
为 true(否则将被忽略)。
默认值:(string)subscriber
注意:当应用程序配置不正确(授权头未设置,或团队名称 / AUD 不正确)时,SSO 将会被 静默禁用。您可以通过检查开发者工具的Cookies部分来确认是否已设置Cookie。
免责声明
此插件与Cloudflare无关,也不是由Cloudflare开发的。所有商标、服务标志和公司名称均为各自所有者的财产。