Разрешить X-API-Key в заголовке или запросе для OpenAPI/Swagger

Я использую ApiKeyAuth в OpenAPI (с Python и Connexion) и хочу иметь возможность передавать параметр X-API-Key либо в header, либо в query. Спецификация, кажется, предполагает, что я могу иметь только одно или другое, а не оба одновременно.

Этот способ просто перезаписывает ключ, поэтому доступен только метод header:

openapi: '3.0.0'
...
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: X-API-Key
      x-apikeyInfoFunc: app.apikey_auth
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      x-apikeyInfoFunc: app.apikey_auth
...

Это вызывает ошибку проверки oneOf:

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: 
        - header
        - query
      name: X-API-Key
      x-apikeyInfoFunc: app.apikey_auth

Результат, который я хочу, должен быть в состоянии сделать:

curl -X GET "http://127.0.0.1:8000/acme" -H  "accept: application/json" -H  "X-API-Key: test12345"

Or:

curl -X GET "http://127.0.0.1:8000/acme?X-API-Key=test12345" -H  "accept: application/json"

person Paul Watson    schedule 28.01.2020    source источник
comment
1-й пример правильный, вам просто нужно переименовать 2-й ApiKeyAuth во что-то другое. Полный пример см. в связанном вопросе ^^.   -  person Helen    schedule 28.01.2020
comment
О, отлично, спасибо, работает. Я не нашел его, так как искал OpenAPI, а не Swagger.   -  person Paul Watson    schedule 28.01.2020