You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Google reCAPTCHA Enterprise API持续返回403 Forbidden的排查咨询

reCAPTCHA Enterprise API调用403 Forbidden错误排查方案

问题背景

调用https://recaptchaenterprise.googleapis.com/v1/projects/{PROJECT_ID}/assessments?key={API_KEY}时持续收到403 Forbidden错误。操作流程严格遵循官方文档中「REST API: 使用API密钥」的方式:

  • 请求方法:POST
  • 未携带Bearer令牌(按文档要求无需此令牌)
  • 请求体:
{"event": {"token":"{RECAPTCHA_TOKEN}","siteKey":"{PROJECT_ID}","expectedAction":"submit"}}

此前组织使用pre-v3版本的reCAPTCHA API(https://www.google.com/recaptcha/api/siteverify?secret={SECRET_KEY}&response={RECAPTCHA_TOKEN})一直正常,API密钥是新增环节,确认密钥本身有效。

排查步骤

  • 验证API密钥权限配置
    确保API密钥已启用reCAPTCHA Enterprise API访问权限:在Google Cloud控制台的API密钥管理页面,检查该密钥是否将reCAPTCHA Enterprise API添加到「API限制」列表中且状态为启用;同时检查密钥的「应用限制」,如果设置了IP地址限制,确认发起请求的服务器IP在允许列表内,服务器端请求不要设置HTTP引用限制,否则会直接被拦截。
  • 检查请求体参数正确性
    注意siteKey字段的值应为reCAPTCHA Enterprise站点密钥(不是PROJECT_ID),这里容易出现参数混淆;确认expectedAction的值与前端生成令牌时指定的action完全一致(大小写敏感);验证token是刚生成的未过期令牌(有效期约2分钟)且未被重复使用。
  • 确认项目与API的关联状态
    检查Google Cloud项目是否已启用reCAPTCHA Enterprise API;确认API密钥所属项目与请求URL中的{PROJECT_ID}为同一个项目,避免跨项目调用导致权限拒绝。
  • 排查网络与防火墙限制
    尝试通过curl或Postman直接发起请求,排除本地网络、防火墙或代理服务器对请求的拦截;检查是否存在Google Cloud的VPC防火墙规则限制了出站请求到reCAPTCHA Enterprise API的443端口。

关于改用gcloud CLI携带Bearer令牌的可行性

改用基于服务账号的Bearer令牌认证(即gcloud CLI方式)是更安全稳定的方案,尤其适合服务器端调用场景:

  • 优势:API密钥易泄露,而服务账号的Bearer令牌可通过gcloud命令或IAM角色实现更精细的权限控制,且令牌有有效期,安全性更高。
  • 操作流程:
    1. 在Google Cloud控制台创建服务账号,为其分配「reCAPTCHA Enterprise Assessor」角色(或自定义精细角色)。
    2. 通过命令生成临时令牌:gcloud auth application-default print-access-token
    3. 在请求Header中添加Authorization: Bearer {生成的令牌},无需再携带API密钥参数。

这种方式能规避API密钥带来的权限配置问题,符合Google Cloud安全最佳实践,推荐生产环境使用。


内容的提问来源于stack exchange,提问作者Greg Boettcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:22:11