跳至主要內容

Cloudflare Turnstile

Turnstile 是一項 CAPTCHA 服務,可協助保護你的網站免於垃圾訊息與濫用。本指南將帶你完成將 Turnstile 與 Logto 整合的流程。

先決條件

  • 一個 Cloudflare 帳號

設定步驟

  1. 前往 Cloudflare 控制台 並選擇你的帳號。
  2. 導覽至 Turnstile > Add widget
  3. 填寫下列資訊:
    • Widget name:你想給這個 widget 的任何名稱
    • Hostname:Logto 的端點網域,例如 https://[tenant-id].logto.app
    • Widget Mode:保持預設值即可

取得 site key 與 secret key

  1. 前往你剛建立的 widget,點擊 Manage widget
  2. 滾動至頁面底部,複製 Site keySecret key

Bring your UI

如果你使用 Bring your UI,Logto 無法自動在你的自訂前端注入或執行 Turnstile。啟用 CAPTCHA 後,你的自訂 UI 必須載入 Turnstile 腳本、渲染 widget,並將回傳的權杖傳送給使用體驗 (Experience) API。

在你的自訂 UI 載入 Turnstile 腳本:

<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

新增 widget 的容器:

<div id="turnstile-container"></div>

在互動開始前,使用你的 site key 渲染 Turnstile,並將 callback 權杖作為 captchaToken 傳遞到 PUT /api/experience

const captchaToken = await new Promise((resolve, reject) => {
window.turnstile.render('#turnstile-container', {
sitekey: '<siteKey>',
callback: resolve,
'error-callback': reject,
size: 'flexible',
});
});

await fetch('/api/experience', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
interactionEvent: 'SignIn',
captchaToken,
}),
});

啟用 CAPTCHA

完成 CAPTCHA 服務商設定後,請記得啟用 CAPTCHA 機器人防護。

前往安全性頁面,找到 CAPTCHA 分頁,並切換「啟用 CAPTCHA」的開關按鈕。