Ключ API конечных точек облака Google не подтвержден - PullRequest
0 голосов
/ 30 октября 2019

Сейчас я занимаюсь разработкой 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. Дайте мне знать, как решить эту проблему.

Спасибо.

1 Ответ

0 голосов
/ 01 ноября 2019

Похоже, что API-интерфейс Service Control не может быть включен в вашем проекте.

Чтобы проверить это, вы можете запустить

gcloud services list --enabled

, если servicecontrol.googleapis.com неВ списке результатов предыдущей команды вы должны выполнить

gcloud services enable servicecontrol.googleapis.com

. Кроме того, вы можете проверить, что у вас включены все необходимые службы для конечных точек. Вы можете увидеть, как это сделать, в документации

...