Google 云端点 API 密钥未验证

问题描述 投票:0回答:1

我现在正在使用云端点和应用程序引擎开发 REST API。 我想实现 api 密钥身份验证,但它不起作用。

没有查询参数“key=${API KEY}”看起来不错。

# curl -X POST https://hogehoge.com/test -d '{"key":"value"}'
{
 "code": 16,
 "message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
 "details": [
  {
   "@type": "type.googleapis.com/google.rpc.DebugInfo",
   "stackEntries": [],
   "detail": "service_control"
  }
 ]
}

但是任何密钥都可以被授予访问后端的权限。

# curl -X POST https://hogehoge.com/test?key=aaa -d '{"key":"value"}'
POST is sended.

当然,通过API管理生成的API密钥也可以。

# curl -X POST https://hogehoge.com/test?key=${realkey} -d '{"key":"value"}'
POST is sended.

云端点文件定义为

swagger: "2.0"
info:
  title: "xxxxxxxxx"
  description: "xxxxxxxxx"
  version: "1.0.0"
host: "hogehoge.com"
schemes:
  - "https"
security: []
paths:
  "/test":
    post:
      description: "test"
      operationId: "test"
      security:
        - api_key: []
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/testRequest'
      responses:
        201:
          description: "Success"
          schema:
            $ref: '#/definitions/testResponse'
definitions:
  testRequest:
    type: object
    required:
      - data
    properties:
      data:
        type: object
        required:
          - key
        properties:
          token:
            type: string
            example: value
            maxLength: 20
  testResponse:
    type: string

securityDefinitions:
  api_key:
    type: "apiKey"
    name: "key"
    in: "query"

我期望只有通过 API 管理生成的密钥才会被授予访问权限。 让我知道如何解决这个问题。

谢谢。

google-cloud-platform google-cloud-endpoints api-key
1个回答
2
投票

您的项目可能未启用服务控制 API。

为了检查这一点,您可以运行

gcloud services list --enabled --project your-gcloud-project-name

如果 servicecontrol.googleapis.com 未在上一个命令的结果中列出,您应该运行

gcloud services enable servicecontrol.googleapis.com

此外,您可以检查是否已启用端点所需的所有服务。您可以在文档

中查看如何执行此操作
© www.soinside.com 2019 - 2024. All rights reserved.