calips-labs/ craft-cloudflare-access
Craft CMS 的 Cloudflare Access 集成。
Requires
- php: >=8.0.2
- codercat/jwk-to-pem: ^1.1
- craftcms/cms: ^4.3.0|^5.0.0
- lcobucci/jwt: ^4.3
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
README
Craft CMS 的 Cloudflare Access 集成。
此插件使您轻松地将 Cloudflare Access 集成到 Craft CMS 中。Cloudflare Access 是一种现代的无信任解决方案,用于保护应用程序或网站。您可以使用它来保护 Craft 网站的控制面板,甚至是整个网站。
此插件通过 Cloudflare 提供的身份验证自动登录到控制面板、前端或两者。Cloudflare Access 使您能够轻松集成各种身份提供者,如 Okta、Microsoft Azure AD、Google Workspace 或社交媒体账户,如 Facebook、GitHub 或 Google 账户。Cloudflare Access 最多支持 50 个用户免费使用。它需要您的网站流量通过 Cloudflare 代理。
这是如何工作的?
每个由 Cloudflare Access 保护的应用程序都由一个 Cloudflare 登录页面保护。这可以针对整个域名或其部分设置(例如,仅 /admin/
)。
Cloudflare 注入一个包含签名、过期信息和用户身份的 JWT 头部。此插件解码 JWT,尝试在 Craft CMS 中找到匹配的用户,并在用户未被挂起或停用时自动登录该用户。
这样,您为用户启用了单点登录,这减少了摩擦,让他们无需保存另一个密码,并且当您依赖于外部身份提供者的 2FA 时,您提高了安全性。
您可以选择为控制面板 URL、前端 URL 或两者启用此功能。此插件不会为 Craft 中不存在的用户创建新用户。
限制
此插件目前有以下限制
- 从控制面板注销不会从 Cloudflare Access 中注销用户,实际上会立即再次登录他们。
- 用户必须在 Craft CMS 中存在。它们不会自动创建。
- 用户仍需要在控制面板中提升权限时使用他的密码。这是 Craft CMS 的限制。
- 未自动登录的用户将看到正常的登录屏幕。他们可以使用任何账户登录。
要求
此插件需要 Craft CMS 4.3.5 或更高版本,以及 PHP 8.0.2 或更高版本。
它还需要配置 Cloudflare Access 应用程序。下面是配置说明。
安装
您可以从插件商店或使用 Composer 安装此插件。
从插件商店
转到您项目控制面板中的插件商店,搜索“Cloudflare Access”,然后按“安装”。
使用 Composer
打开您的终端并运行以下命令
# go to the project directory cd /path/to/my-project.test # tell Composer to load the plugin composer require calips-labs/craft-cloudflare-access # tell Craft to install the plugin ./craft plugin/install cloudflare-access
配置 Cloudflare Access
- 转到Cloudflare Zero Trust 仪表板。
- 转到“访问”>“应用程序”,然后单击“添加应用程序”。
- 选择“自托管”。
- 输入一个名称并设置域名、子域名和可选路径。如果只想保护控制面板,请输入
/admin/
。 - 应用程序外观仅与 Cloudflare 的应用程序启动器相关。
- 选择您接受的身份提供者。默认情况下,启用所有身份提供者。对于测试,一次性 PIN 可能很有用(您输入电子邮件地址,然后必须输入发送到该电子邮件地址的 PIN 代码)。
- 点击 下一步。
- 现在您需要创建一个策略。输入一个名称并配置以下规则。为了测试,您可能选择 所有人,这将允许任何人登录。更好的规则可能会检查电子邮件地址的域名部分或Azure组ID。
- 点击 下一步。
- CORS设置、Cookie设置和附加设置可以保持不变。点击 添加应用程序。
- 在应用程序概览中,添加了一个新应用程序。点击 编辑。
- 点击 概览。复制 应用程序受众(AUD)标签。
- 安装Cloudflare Access插件到Craft,启用它并转到插件设置。
- 输入AUD标签。
- 您还必须输入团队域名。您可以在Cloudflare控制面板的 设置 → 常规 下找到它。复制包括最后部分(包含
.cloudflareaccess.com
)的团队域名。 - 在插件设置中,启用控制面板和/或前端的自动登录。
- 通过Craft中的工具 → Cloudflare Access验证您的令牌是否按预期工作。它应该显示您的Cloudflare登录。
注意:您可以使用以下URL从Cloudflare Access登出:https://<team>.cloudflareaccess.com/cdn-cgi/access/logout
这在进行测试时可能很有用。