为 Keycloak 流程添加 CAPTCHA 验证
为 Keycloak 浏览器登录、自助注册和重置密码页面提供服务端校验的人机挑战。单个 provider JAR,无需写代码。
为什么在 Keycloak 上用 CaptchaLa
在机器人最先攻击的页面上进行服务端校验。
隐私优先
不引入第三方追踪像素与广告信标,用户不被画像,开箱即原生符合 GDPR、CCPA 与 PIPL。
服务端防重放
Keycloak 在渲染时签发一次性 token,并用 App Secret 在服务端完成校验。已解过的 token 无法复用或跨表单共享。
即插即用,无需写代码
将单个 provider JAR 放入 providers/,运行 kc.sh build,在流程中添加执行步骤并粘贴两个密钥即可。密钥永远不会到达浏览器。
可保护的范围
在认证设置中独立添加每个流程。
三步接入
部署 provider,然后接入流程。
- 1
部署 JAR 包
将 keycloak-captchala.jar 复制到 /opt/keycloak/providers/,运行 kc.sh build 并重启。将登录主题设置为 'captchala'。
- 2
粘贴应用 Key 与应用密钥
在 captcha.la 注册账号,复制 App Key 和 App Secret,粘贴到 Captchala 执行步骤的配置项(齿轮图标)中。
- 3
选择要保护的流程
将 Captchala 步骤添加到浏览器登录、注册和/或重置凭据流程中——登录、注册、重置密码,完成。
常见问题
Keycloak 插件免费吗?
是的,插件免费且开源。CaptchaLa 免费套餐包含每月 10,000 次验证;仅在需要更高用量时才需要付费。
支持哪些 Keycloak 版本?
Keycloak 26+ Quarkus 发行版,基于 26.5.6 与 Java 17 构建。将 JAR 放入 providers/,运行 kc.sh build 后重启即可。
可以保护哪些页面?
浏览器登录、自助注册和重置密码。每个流程独立接入,可根据需要保护其中一个、两个或全部三个。
App Secret 会暴露给浏览器吗?
不会。密钥以脱敏形式存储,仅在 Keycloak 向 CaptchaLa API 发起请求时通过 X-App-Secret 请求头传输,不会出现在任何页面、模板或日志中。
CaptchaLa API 不可达时会怎样?
默认情况下插件会失败关闭,提交将被拒绝。可在任意执行步骤上切换为失败放行,适合灰度上线。