为 Swagger 安全方案使用 API 密钥和秘密

Using an API Key & Secret for Swagger Security Scheme

Swagger 支持 api key 的安全性,但这似乎仅限于单个参数。

有没有办法定义一组预期作为请求参数的参数(密钥和机密)?

或者是跳过安全方案并将这些参数添加到每个请求的唯一方法吗?

是的,OpenAPI (Swagger) 2.0 和 3.0 允许您定义多个安全定义并将操作标记为需要多个安全,例如一对 API 密钥。

在下面的示例中,我定义了两个 API 键,KeySecretKey,它们都应该出现在每个请求的 headers 中为了获得身份验证。

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

这意味着端点期望 KeySecretKey,但不能同时期望两者。