Api Connect — определите разную безопасность для каждого пути

У меня есть приложение node/express, которое предоставляет API с помощью IBM ApiConnect в IBM Cloud.

==ОБНОВЛЕНИЕ НАЧАЛО==

Я не использую IBM ApiConnect напрямую из службы каталогов, но я использовал опцию «Управление API» и обновил определение API.

==ОБНОВЛЕНИЕ КОНЕЦ==

Мне нужно определить два типа API безопасности: Open API и Secured API. Первый должен быть открыт, а второму нужны Client Id и Client Secret.

Я не могу правильно определить это требование, кто-нибудь может мне помочь?

==ОБНОВЛЕНИЕ НАЧАЛО==

/callback/sign должен быть открыт

/services/products должны быть защищены

==ОБНОВЛЕНИЕ КОНЕЦ==

Это мой yaml в разделах:

Определение безопасности на уровне API

securityDefinitions:
  client_secret:
    type: apiKey
    description: ''
    in: header
    name: X-Client-Secret
  client_id:
    type: apiKey
    description: ''
    in: header
    name: X-Client-Id
security:
  - client_secret: []
    client_id: []

и, наконец, определение пути:

paths:
  /callback/sign:
    get:
      responses:
        '200':
          description: 200 OK
      security:
        - {}
    post:
      responses:
        '200':
          description: 200 OK
      parameters:
        - name: body
          required: false
          in: body
          schema:
            type: object
      security:
        - {}
  /services/products:
    get:
      responses:
        '200':
          description: 200 OK

person Neo1975    schedule 17.05.2018    source источник


Ответы (2)


Я бы рекомендовал использовать для этого визуальный редактор. Основываясь на вашем примере, ваш файл yaml должен выглядеть следующим образом:

  paths:
      /callback/sign:
        get:
          responses:
            '200':
              description: 200 OK
        post:
          responses:
            '200':
              description: 200 OK
          parameters:
            - name: body
              required: false
              in: body
              schema:
                type: object
      /services/products:
        get:
          responses:
            '200':
              description: 200 OK
          security:
            - client_id: []
              client_secret: []
person Álvaro Pérez Soria    schedule 17.05.2018
comment
Привет, Альваро, спасибо за ответ, но /callback/sign: должен быть открыт, для этого требуются client_id и client_secret. Можете ли вы обновить свой ответ? - person Neo1975; 17.05.2018
comment
Я не понимаю, какая операция должна быть незащищенной? ПОЛУЧИТЬ или ПОСТАВИТЬ? - person Álvaro Pérez Soria; 17.05.2018
comment
[GET,POST] /callback/sign -> unsecured [GET] /services/products secure. Я думаю, что если я добавлю раздел securityDefinitions, каждый путь должен быть защищен. Также с пустой безопасностью API и определенной для каждого пути. - person Neo1975; 18.05.2018
comment
Раздел определений безопасности определяет только доступные параметры безопасности. Они не применяются, если вы не добавите их на уровень пути или операции. - person Álvaro Pérez Soria; 18.05.2018
comment
Я думаю так же, но в моем состоянии это не работает. Я не использую напрямую API-подключение, но я активировал в своем приложении nodejs управление API и импортировал определение API, но оно не работает должным образом. Api Explorer правильно описывает мое определение, но когда я собираюсь его использовать, поведение будет таким, как я описываю. - person Neo1975; 18.05.2018

Если вы хотите установить безопасность по умолчанию, но затем переопределить ее для одного или нескольких путей/операций, «нет безопасности» / «открыто» следует закодировать как

security: []

скорее, чем

security: - {}

person SJC    schedule 18.05.2018
comment
Спасибо за ответ, но без последствий. :( - person Neo1975; 18.05.2018