4

我正在为 Swagger/OpenAPI 实现代码生成器。但是,我在实现安全要求时遇到了问题。这些要求被定义为对象列表。列表成员是替代(或),对象成员是与。例如:

 [ { a:[], b:{} }, { c:{}, d:{} } ]

这应该导致 (a && b) || (c && d)

但是,在实现这一点时,我遇到了实际安全要求有副作用的问题:

  • OAuth2 - 如果失败必须重定向
  • Basic – 必须发送 HTTP 401 Unauthorized 状态和 WWW-Authenticate 标头
  • ApiKey——随便

但是,既然有一个or你不能让第一次失败来设置这些副作用。似乎您需要先尝试所有组合,然后返回第一个并允许它设置标题/结果代码?

查看http://editor.swagger.io/上的生成器,我发现大多数生成器似乎都忽略了安全性,而 Java 生成器似乎and在组合列表中。在我的示例中,我看到a && b && c && d.

所以我的问题是:

  • 是否有正确实现 OpenAPI 安全性的生成器?
  • 如何处理这些副作用?
4

0 回答 0