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

GCP API Gateway Swagger配置未正确校验API密钥的问题解决

问题原因及解决步骤

核心问题

你的API Gateway未正确验证API密钥,主要有两个原因:

  1. Swagger配置中定义的API密钥请求头名称与实际调用时传递的不一致
  2. 未将创建的API密钥与API Gateway的API资源绑定

步骤1:修正Swagger配置

将securityDefinitions中的请求头名称改为你实际传递的X-goog-api-key,确保配置和调用逻辑一致。修正后的完整Swagger示例如下:

swagger: '2.0'
info:
  title: api-1
  description: API Gateway First for Testing
  version: 1.0.0
securityDefinitions:
  api_key_header:
    type: apiKey
    name: X-goog-api-key  # 与调用时的请求头名称保持一致
    in: header
schemes:
  - https
produces:
  - application/json
paths:
  /endpoint1:
    post:
      summary: Simple echo service
      operationId: echo-1
      x-google-backend:
        address: https://<CLOUD FUNCTION GEN 2 NAME>-<MORE IDENTIFYING INFO>-uc.a.run.app
      security:
        - api_key_header: []  # 启用该安全规则
      responses:
        '200':
          description: OK

如果偏好使用自定义请求头(比如原配置中的key),则调用时需将请求头改为key: <你的API密钥>,而非X-goog-api-key。

步骤2:绑定API密钥到API Gateway的API

仅修改Swagger配置不足以生效,必须在GCP控制台完成密钥与API的关联:

  • 进入GCP控制台「API和服务」→「凭据」页面
  • 找到你创建的API密钥,点击编辑
  • 在「API限制」区域选择「限制密钥」,从下拉列表中选中Swaggertitle字段对应的API(即api-1)
  • 保存设置

步骤3:重新部署API Gateway

修改Swagger后,需重新部署API Gateway使配置生效:

gcloud api-gateway apis deployments create <部署名称> --api=<API名称> --openapi-spec=<修正后的Swagger文件路径> --project=<你的项目ID>

验证测试

完成上述步骤后,用curl测试验证效果:

  • 不传API密钥:应返回401/403错误
  • 传错误的API密钥:应返回401/403错误
  • 传正确的API密钥:正常返回200响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:45:36