为 Swagger 安全方案使用 API 密钥和秘密
Using an API Key & Secret for Swagger Security Scheme
Swagger 支持 api key 的安全性,但这似乎仅限于单个参数。
有没有办法定义一组预期作为请求参数的参数(密钥和机密)?
或者是跳过安全方案并将这些参数添加到每个请求的唯一方法吗?
是的,OpenAPI (Swagger) 2.0 和 3.0 允许您定义多个安全定义并将操作标记为需要多个安全,例如一对 API 密钥。
在下面的示例中,我定义了两个 API 键,Key
和 SecretKey
,它们都应该出现在每个请求的 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
这意味着端点期望 Key
或 SecretKey
,但不能同时期望两者。
Swagger 支持 api key 的安全性,但这似乎仅限于单个参数。
有没有办法定义一组预期作为请求参数的参数(密钥和机密)?
或者是跳过安全方案并将这些参数添加到每个请求的唯一方法吗?
是的,OpenAPI (Swagger) 2.0 和 3.0 允许您定义多个安全定义并将操作标记为需要多个安全,例如一对 API 密钥。
在下面的示例中,我定义了两个 API 键,Key
和 SecretKey
,它们都应该出现在每个请求的 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
这意味着端点期望 Key
或 SecretKey
,但不能同时期望两者。