繁體中文(台灣)
  • 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 Admin Console 並轉到“API 資源”標籤,創建一個名為“Workers sample API”的 API 資源,其資源指示為 https://sample.workers.dev/。同時為這個 API 資源建立一個許可 greet:visitor

Create Workers sample API resource

  1. 創建“Workers admin role”,它是一個“機器對機器”角色,並將 greet:visitor 範圍分配給該角色。

Create M2M role

  1. 創建一個 M2M 應用並將“Workers admin role”分配給該應用。

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 都能提供滿足你特定需求的靈活性和可擴展性。