Logto x Cloudflare Workers:如何保障你的 Workers 免受公眾訪問?
在本文中,我們介紹了如何使用 Logto 保護你的 Cloudflare Workers APIs 。我們使用 Hono 作為網頁應用框架以精簡開發流程。
Cloudflare Workers(以下內容簡稱 Workers)提供無伺服器執行環境,使你能夠創建新應用或增強現有應用而無需配置或維護基礎設施。
使用 Workers ,你可以構建無伺服器應用並立即在全球部署,以獲得卓越的性能、可靠性和擴展性。 Workers 不僅提供卓越的性能,還提供極為慷慨的免費計劃和負擔得起的付費計劃。無論你是個體開發者還是大規模團隊, Workers 都能讓你快速開發和交付產品,同時減少運營開支。
Workers 默認是公開訪問的,需要採取保護措施來防止攻擊和濫用。Logto 提供全面、易用和可擴展的身份服務,能夠保護 Workers 和其他所有網絡服務。
本文深入解析了使用 Logto 來保障 Workers 的過程。
構建 Workers 範例
首先讓我們在本地電腦上使用 Hono 构建一個 Workers 範例專案。
我們使用 Wrangler CLI 將範例部署到 Cloudflare,這樣我們就可以訪問該路徑。
保護 Workers APIs
為了對比公開訪問的 API 和受保護的 API,我們添加了一個 GET /auth/greet
API ,需要特定的範圍才能訪問。
我們無法在沒有適當許可權的情況下訪問相應的 API 。
為了正確管理對 Workers APIs 的訪問,我們引入了 Logto 。
設置 Logto
如果你沒有帳戶,請註冊一個。
我們使用機器對機器(M2M)作為範例來訪問受保護的 Workers APIs ,因為這很直接。如果你想授權訪問給 web 應用用戶,設置相當相似,但你應該使用“用戶”角色而不是“機器對機器”角色。
- 進入 Logto 管理控制台並轉到“API 資源”標籤,創建一個名為“Workers 範例 API”的 API 資源,資源標識設為
https://sample.workers.dev/
。還為此 API 資源創建一個許可greet:visitor
。
- 創建“Workers 管理員角色”,這是一個“機器對機器”角色,並將
greet:visitor
範疇分配給此角色。
- 創建一個 M2M 應用並將“Workers 管理員角色”分配給該應用。
更新 Workers 驗證器
由於 Logto 在後台使用 JWT 訪問令牌,我們需要在 Workers 中實現 JWT 驗證邏輯。
因為 JWT 訪問令牌是由 Logto 簽發的,我們需要:
- 獲取相應的公鑰以驗證簽名。
- 驗證 JWT 訪問令牌的使用者是 Workers APIs 。
這些常量可以在 wrangler.toml
文件中配置 [1] 並將其作為 Workers 的環境變數進行部署。你也可以在 Cloudflare Dashboard 上手動管理環境變數。
將 Workers 專案部署到 Cloudflare 之後,我們可以測試 API 是否已成功保護。
- 獲取訪問令牌
- 請求 Workers 的
GET /auth/greet
API
結論
通過本文的逐步指南,你應該能夠使用 Logto 為你的 Workers APIs 構建保護措施。
在這篇文章中,我們使用 Wrangler CLI 進行 Workers 專案的本地開發和部署。 Cloudflare 另外還提供強大而靈活的 Workers APIs 來方便部署和管理。
考慮開發一個 SaaS 應用。 Cloudflare API使你能夠輕鬆為每個租戶部署專屬的 Workers ,同時 Logto 確保訪問令牌對各自租戶仍然是專屬的。這種細粒度控制防止跨租戶的未經授權訪問,增強了你的 SaaS 應用用戶的安全性和數據隱私。
Logto 的適應性和強大架構滿足各種應用的多樣身份驗證和授權需求。無論你正在構建一個複雜的 SaaS 平台還是簡單的 web 應用, Logto 為你提供了滿足特定需求的靈活性和可擴展性。