Отсутствует поле ключа подписки в соединителе Swagger API (через Azure API Management) в приложении логики

Я создал REST API со спецификацией Swagger / OPEN API, который я хотел бы использовать через клиент управления API Azure в приложении логики.

Когда я скачиваю спецификацию, она выглядит так:

{
  "swagger": "2.0",
  "info": {
    "title": "Leasing",
    "version": "1.0"
  },
  "host": "ENDPOINT.azure-api.net",
  "basePath": "/leasing",
  "schemes": [
    "http",
    "https"
  ],
  "securityDefinitions": {
    "apiKeyHeader": {
      "type": "apiKey",
      "name": "Ocp-Apim-Subscription-Key",
      "in": "header"
    },
    "apiKeyQuery": {
      "type": "apiKey",
      "name": "subscription-key",
      "in": "query"
    }
  },
  "security": [
    {
      "apiKeyHeader": []
    },
    {
      "apiKeyQuery": []
    }
  ],
  "paths": {
    "/{Brand}/groups": {
      "get": {
        "description": "Get a list of leasing groups on a brand",
        "operationId": "GetGroups",
        "parameters": [
          {
            "name": "Brand",
            "in": "path",
            "description": "Selection of possible brands",
            "required": true,
            "type": "string",
            "enum": [
              "Volkswagen",
              "Audi",
              "Seat",
              "Skoda",
              "VolkswagenErhverv",
              "Porsche",
              "Ducati"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of leasing groups",
            "schema": {
              "$ref": "#/definitions/GroupArray"
            }
          },
          "400": {
            "description": "If the brand is not valid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "produces": [
          "application/json"
        ]
      }
    }
  },
  "definitions": {
    "Group": {
      "type": "object",
      "properties": {
        "id": {
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "leasingModelCount": {
          "format": "int32",
          "type": "integer"
        },
        "lowestMonthlyFee": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "Error": {
      "type": "object",
      "properties": {
        "code": {
          "enum": [
            "NotValidBrand",
            "NotValidGroupId"
          ],
          "type": "string",
          "x-ms-enum": {
            "name": "ErrorCode",
            "modelAsString": true
          }
        },
        "message": {
          "type": "string"
        }
      }
    },
    "GroupArray": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Group"
      }
    }
  }
}

Когда я добавляю это в приложение логики с коннектором HTTP + Swagger, я могу определить только ввод запроса {Brand}, но не различные способы использования ключа подписки (заголовок или запрос), как определено в SecurityDefiniations.

Целые разделы securityDefinitions и security автоматически создаются в службе управления API Azure, но не распознаются в приложении логики.

См. Изображение поля с отсутствующим ключом подписки:

введите здесь описание изображения

Что я делаю неправильно?

Обновить

Я пробовал следующее:

  • Использование поля «Аутентификация» (но это поле ограничено определенными типами потоков аутентификации https://docs.microsoft.com/en-us/azure/connectors/connectors-native-http#authentication)
  • Измените действие Http + Swagger приложения Logic в коде, чтобы добавить параметр заголовка, но это действие преобразует действие в простое действие Http и, следовательно, теряет автоматическое создание схемы из Swagger.

person Jacob Møhl    schedule 14.02.2018    source источник


Ответы (1)


Я думаю, вам нужно указать это в поле Authentication в формате JSON. Что-то вроде:

    { 
         "apiKeyHeader" : "your Ocp-Apim-Subscription-Key", 
         "apiKeyQuery" : "your subscription key" 
    }
person Steven Van Eycken    schedule 15.02.2018
comment
Если я прочитал docs.microsoft.com/en-us / azure / Connectors / правильно "Аутентификация" - это только ограниченный набор типов аутентификации (базовая, клиентский сертификат, AAD / OAuth), а не для введенных ключей в заголовок запроса og. Я прочитал codit.eu/blog/2017/02/09/, и в этих примерах ключи отображаются как поле в действии приложения Logic. - person Jacob Møhl; 15.02.2018