当前位置: 首页 > 知识库问答 >
问题:

我如何在Swagger规范(Swagger.json)中表示'authorization:barer'

微生永春
2023-03-14

我试图传达身份验证/安全方案需要设置一个头,如下所示:

Authorization: Bearer <token>

这是我根据swagger文档所做的:

securityDefinitions:
  APIKey:
    type: apiKey
    name: Authorization
    in: header
security:
  - APIKey: []

共有2个答案

荀学文
2023-03-14

OpenAPI3.0现在在本地支持承载/JWT身份验证。它的定义是这样的:

openapi: 3.0.0
...

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT  # optional, for documentation purposes only

security:
  - bearerAuth: []

这在Swagger UI 3.4.0+和Swagger Editor 3.1.12+中支持(同样,仅适用于OpenAPI 3.0规范!)。

UI会显示“授权”按钮,您可以点击该按钮并输入承载令牌(只是令牌本身,没有“承载”前缀)。之后,将使用authorization:barer xxxxxx头发送“try it out”请求。

如果您使用Swagger UI,并且由于某种原因,需要以编程方式添加authorization头,而不是让用户单击“authorize”并输入令牌,则可以使用RequestInterceptor。此解决方案适用于Swagger UI3.x;UI2.x使用了一种不同的技术。

// index.html

const ui = SwaggerUIBundle({
  url: "http://your.server.com/swagger.json",
  ...

  requestInterceptor: (req) => {
    req.headers.Authorization = "Bearer xxxxxxx"
    return req
  }
})
颜志学
2023-03-14

也许这能有所帮助:

swagger: '2.0'
info:
  version: 1.0.0
  title: Based on "Basic Auth Example"
  description: >
    An example for how to use Auth with Swagger.

host: basic-auth-server.herokuapp.com
schemes:
  - http
  - https
securityDefinitions:
  Bearer:
    type: apiKey
    name: Authorization
    in: header
paths:
  /:
    get:
      security:
        - Bearer: []
      responses:
        '200':
          description: 'Will send `Authenticated`'
        '403': 
          description: 'You do not have necessary permissions for the resource'

您可以复制并粘贴到这里:http://editor.swagger.io/#/查看结果。

在swagger editor web中也有一些具有更复杂的安全配置的示例,可以为您提供帮助。

 类似资料:
  • 我正在为一个新endpoint创建一个招摇规范,该endpoint将接收一个作为二进制数据的文件。你会如何在夸张的规范中表达这一点?我将对象视为数据类型,但这似乎不是我要寻找的。过去有人这样做过吗? 据我所知,这个问题不是重复的,因为它专门涉及二进制或“blob”对象类型。

  • 我正在用ExpressJs创建一个Restful服务器。我已经集成了swagger和jsdoc。以下是相关文件。下面(header.png)是我期望我的头在swagger UI中的样子。但是,当我打开我的招摇过市UI时(http://localhost:3000/api-docs/),我无法在标题中看到令牌标记(令牌和身份验证)。 app.route 当前Swagger用户界面:

  • 我试图用一个静态的swagger文件来记录一个API,该文件可以返回一些JSON,其中包含一个类似如下的数组: 我尝试了几种不同的方法来定义规范,使用多态性或显式定义多个示例。这些例子要么最终看起来像: 或者只是: 有没有办法在我的swagger规范中定义一个示例,以便swagger-ui显示的示例有效负载将包含一个数组,该数组包含一个A类型的示例和一个B类型的示例,就像我编写的第一个JSON一样

  • 我开发了一个带有Swagger注释的REST API。我已经能够展示一个炫耀的ui应用程序的api文档,非常好。 问题:根据我的注释,我试图使用swagger提供的url生成符合该规范的客户端。问题是,它似乎是不兼容的,或者至少,我不知道如何做swagger编辑器读取我的网址,并从那时起,产生客户。但是swagger编辑器向我报告了一些错误... 是否可以将我的带注释的 swagger api 与

  • iam试图验证一些可能包含swagger规范的字符串。我正在尝试使用swagger解析器。 以下代码不起作用。我只收到消息:“[属性不是]类型” swagger规范是从xml文件中读出的。 这个方法是错误的吗?或者。错误消息的含义是什么?我只想知道字符串是否包含JSON格式的有效Swagger规范。 谢谢你的帮助。 更新:问题已解决 据我所知,如果字符串不是json有效的,就会抛出错误。首先我检查

  • 我正在使用go-swagger生成API服务器。我注意到json是由swagger生成的。yml保存在restapi/embedded\u spec.go中。 公开JSON规范以便我的ReactJS客户端可以访问它的最佳方式是什么? 到目前为止,我不得不使用招摇发球招摇。yml—端口=50000,并将JavaScript客户端指向本地主机:50000/swagger。json。我正在寻找一种通过A