使用Swigger安全方案的API密钥和秘密

Tim*_*tle 14 swagger

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

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

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

Moh*_*sen 20

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

在下面的示例中,我将定义两个API密钥,Key并且SecretKey这两个API密钥都应存在于每个请求的标头中以便进行身份验证.

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
Run Code Online (Sandbox Code Playgroud)

请注意,这与...不同

      security:
        - key: []
        - secret_key: []  # <-- Note the leading dash here
Run Code Online (Sandbox Code Playgroud)

这意味着端点期望要么KeySecretKey,但不能同时.

  • 那么你在哪里设置秘密API密钥? (11认同)
  • @ChrisRich 在 `swagger-ui.html` 文件中,API URL 旁边的标题栏中会出现一个名为“Authorize”的按钮。单击该按钮即可使用您的 API 密钥登录,并从现在开始使用该密钥发送请求。 (2认同)