calips-labs/craft-cloudflare-access

Craft CMS 的 Cloudflare Access 集成。

1.1.0 2024-05-19 13:46 UTC

This package is auto-updated.

Last update: 2024-09-19 14:31:53 UTC


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

  1. 转到Cloudflare Zero Trust 仪表板
  2. 转到“访问”>“应用程序”,然后单击“添加应用程序”。
  3. 选择“自托管”。
  4. 输入一个名称并设置域名、子域名和可选路径。如果只想保护控制面板,请输入 /admin/
  5. 应用程序外观仅与 Cloudflare 的应用程序启动器相关。
  6. 选择您接受的身份提供者。默认情况下,启用所有身份提供者。对于测试,一次性 PIN 可能很有用(您输入电子邮件地址,然后必须输入发送到该电子邮件地址的 PIN 代码)。
  7. 点击 下一步
  8. 现在您需要创建一个策略。输入一个名称并配置以下规则。为了测试,您可能选择 所有人,这将允许任何人登录。更好的规则可能会检查电子邮件地址的域名部分或Azure组ID。
  9. 点击 下一步
  10. CORS设置、Cookie设置和附加设置可以保持不变。点击 添加应用程序
  11. 在应用程序概览中,添加了一个新应用程序。点击 编辑
  12. 点击 概览。复制 应用程序受众(AUD)标签
  13. 安装Cloudflare Access插件到Craft,启用它并转到插件设置。
  14. 输入AUD标签。
  15. 您还必须输入团队域名。您可以在Cloudflare控制面板的 设置常规 下找到它。复制包括最后部分(包含 .cloudflareaccess.com)的团队域名。
  16. 在插件设置中,启用控制面板和/或前端的自动登录。
  17. 通过Craft中的工具 → Cloudflare Access验证您的令牌是否按预期工作。它应该显示您的Cloudflare登录。

注意:您可以使用以下URL从Cloudflare Access登出:https://<team>.cloudflareaccess.com/cdn-cgi/access/logout
这在进行测试时可能很有用。