安全的“hello world”谷歌雲端功能

安全的“hello world”谷歌雲端功能

我需要一個非常安全的雲端功能,因此我嘗試將其放在 API 網關後面。當我直接在標頭中傳遞不記名令牌來呼叫該函數時,該函數工作正常:

https://us-central1-<my-project>.cloudfunctions.net/<my-hello-function>

不過,我想允許它透過 API 網關與 API 令牌一起使用(然後做一些比說「你好」更有用的事情):

https://my-gateway-xxxxxxxx.uc.gateway.dev/v1/stats&key=<my-API-token>

當我嘗試調用它時,我得到:

{ "code": 404, "message": "路徑與任何要求 URI 範本不符。" }

我的 API 網關設定檔:

swagger: "2.0"
info:
  title: my-gateway
  version: "1.0.0"
basePath: "/v1"
schemes:
 - "https"
produces:
 - application/json
paths:
  /stats:
    get:
      tags:
      - "stats"
      summary: "get service stats"
      description: "Returns statistics"
      operationId: "hello_world"
      #produces:
      #- "application/json"
      parameters:
      - name: "since"
        in: "header"
        description: "Date to retrieve information"
        required: false
        type: "string"
        format: "date"
      x-google-backend:
          address: https://us-central1-<my-project>.cloudfunctions.net/<my-hello-function>
          path_translation: CONSTANT_ADDRESS
          protocol: h2
      responses:
        "200":
          description: "successful operation"
          schema:
            $ref: "#"
        "400":
          description: "Invalid datetime supplied"
        "404":
          description: "Unknown path"
      security:
      - api_key: []
securityDefinitions:
  api_key:
    type: "apiKey"
    name: "api_key"
    in: "query"
definitions:
  ApiResponse:
    type: "object"
    properties:
      code:
        type: "integer"
        format: "int32"
      type:
        type: "string"
      message:
        type: "string"

少了什麼?我究竟做錯了什麼?

答案1

希望你一切順利。

我不是專家,但是在閱讀文件並再次檢查您的程式碼片段後,不應該使用namein securityDefinitionsbekey而不是api_keyif that's 你在 url 中使用的內容嗎?

my-gateway-xxxxxxxx.uc.gateway.dev/v1/stats&鑰匙=<我的 API 令牌>

答案2

為了透過 URL 傳遞來使用 API 金鑰,您必須將其作為查詢參數發送,發送它的方式就像嘗試進入名為stats&key=而不是 stats 的路由。

您的 URL 必須類似於:

https://my-gateway-xxxxxxxx.uc.gateway.dev/v1/stats?key=<my-API-token>

更換&在關鍵參數上

相關內容