Использование ключа API и секрет для схемы безопасности Swagger

Swagger поддерживает безопасность api key, но, похоже, он ограничен одним параметром.

Есть ли способ определить набор параметров (ключ и секрет), которые ожидаются в качестве параметров в запросе?

Или это единственный способ просто пропустить схему безопасности и просто добавить эти параметры для каждого запроса?

Ответ 1

Да, OpenAPI (Swagger) 2.0 и 3.0 позволяет определять несколько определений безопасности и помечать операцию как требующую нескольких ценных бумаг, например пару ключей API.

В следующем примере я определяю два ключа API, Key и SecretKey, оба из которых должны присутствовать в заголовках каждого запроса для аутентификации.

swagger: '2.0'
info:
  version: 0.0.0
  title: Simple API
securityDefinitions:
  key:
    type: apiKey
    in: header
    name: Key
  secret_key:
    type: apiKey
    in: header
    name: SecretKey

# Or if you use OpenAPI 3.0:
# components:
#   securitySchemes:
#     key:
#       type: apiKey
#       in: header
#       name: Key
#     secret_key:
#       type: apiKey
#       in: header
#       name: SecretKey

paths:
  /:
    get:
      # Both 'Key' and 'SecretKey' must be used together
      security:
        - key: []
          secret_key: []
      responses:
        200:
          description: OK

Обратите внимание, что это отличается от

      security:
        - key: []
        - secret_key: []  # <-- Note the leading dash here

Это означает, что конечная точка ожидает либо Key либо SecretKey, но не оба.