简体中文
  • Logto
  • Cloudflare Workers
  • Workers
  • authorization
  • authentication
  • SaaS
  • tenant
  • serverless

Logto x Cloudflare Workers:如何保护你的 Workers 免受公共访问?

在本文中,我们介绍了如何使用 Logto 来保护你的 Cloudflare Workers API。我们使用了 Hono 作为 Web 应用框架来简化开发过程。

Darcy Ye
Darcy Ye
Developer

Cloudflare Workers(以下简称 Workers)提供了一种无服务器的执行环境,允许你在无需配置或维护基础设施的情况下创建新的应用程序或增强现有的应用程序。

使用 Workers,你可以构建你的无服务器应用程序,并在全球范围内立即部署,实现卓越的性能、可靠性和可扩展性。Workers 不仅提供了出色的性能,还提供了非常慷慨的免费计划以及价格实惠的付费计划。无论你是一个个人开发者还是一个大规模团队,Workers 都可以让你快速开发和交付产品,同时最小化运营开销。

Workers 默认是公开可访问的,因此需要保护措施来防止攻击和滥用。Logto 提供了一种全面的、用户友好的和可扩展的身份服务,可以保护 Workers 以及所有其他 Web 服务。

本文深入探讨了使用 Logto 保护你的 Workers 的流程。

构建一个 Workers 示例

首先,让我们使用 Hono 在本地机器上构建一个 Workers 示例项目。

我们使用 Wrangler CLI 将示例部署到 Cloudflare,因此我们可以访问该路径。

Deploy sample

保护 Workers API

为了比较公开可访问的 API 和受保护的 API,我们添加一个 GET /auth/greet API,访问该 API 需要特定的权限范围。

如果没有适当的权限,我们无法访问相应的 API。

Request authed greet

为了正确管理对 Workers API 的访问,我们引入了 Logto。

设置 Logto

如果你还没有账户,先注册一个账户。

我们使用机器对机器 (M2M) 作为访问受保护的 Workers API 的示例,因为它非常简单直接。如果你想为 Web 应用用户授予访问权限,设置过程也很相似,但你应该使用“用户”角色,而不是“机器对机器”角色。

  1. 进入 Logto 管理控制台,转到“API 资源”标签,创建一个名为“Workers 示例 API”的 API 资源,将资源指示符设置为 https://sample.workers.dev/,并为此 API 资源创建一个名为 greet:visitor 的权限。

Create Workers sample API resource

  1. 创建“Workers 管理员角色”,这是一个“机器对机器”角色,并将 greet:visitor 范围分配给该角色。

Create M2M role

  1. 创建一个 M2M 应用,并将“Workers 管理员角色”分配给该应用。

Create M2M app

更新 Workers 身份验证器

由于 Logto 在后台使用 JWT 访问令牌,我们需要在 Workers 中实现 JWT 验证逻辑。

由于 JWT 访问令牌是由 Logto 发布的,我们需要:

  1. 获取相应的公钥以验证签名。
  2. 验证 JWT 访问令牌的消费者是 Workers API。

这些常量可以在 wrangler.toml 文件中配置 [1],并将作为 Workers 的环境变量进行部署。你也可以在 Cloudflare 仪表板上手动管理环境变量。

将 Workers 项目部署到 Cloudflare 后,我们可以测试 API 是否已成功保护。

  1. 获取访问令牌

Get access token

Inspect JWT

  1. 请求 Workers GET /auth/greet API

Access authed API

结论

通过本文中的逐步指南, 你应该能够使用 Logto 构建对 Workers API 的保护。

在本文中,我们使用了 Wrangler CLI 进行本地开发和 Workers 项目的部署。Cloudflare 还提供了强大且多样化的 Workers API 来便于部署和管理。

考虑开发一个 SaaS 应用程序。Cloudflare 的 API 使你可以轻松为每个租户部署专用的 Workers,同时,Logto 确保访问令牌仅限于各自的租户。这样的细粒度控制防止了跨租户的未经授权访问,从而增强了你的 SaaS 应用用户的安全性和数据隐私。

Logto 的灵活且强大的架构能够满足各种应用程序的不同身份验证和授权需求。无论你是在构建一个复杂的 SaaS 平台,还是一个简单的 Web 应用,Logto 都能提供满足你特定需求的灵活性和可扩展性。