为什么从Swagger UI发送的请求中缺少Authorization标头?

时间:2020-04-28 09:36:58

标签: node.js swagger swagger-ui openapi swagger-2.0

我想向我的Node.js API添加文档,为此,我有一个YAML文件,其中放置了我的定义,粗大的文档位于localhost:5000 / api-doc且工作正常。

现在我必须添加Bearer授权,但是Swagger具有以下定义:

swagger: "2.0"
info:
    version: 1.0.0
    title: My API documentation
    description: >
        My API documentation

host: localhost:5000
basePath: "/v1"
schemes:
    - http
securityDefinitions:
    Bearer:
        type: apiKey
        description: "Value: Bearer "
        name: Authorization
        in: header
paths:
    /users:
        get:
            responses:
                "200":
                    description: "Will send `Authenticated`"
                "403":
                    description: "You do not have necessary permissions for the resource"

测试请求时(我单击右上角的“授权”按钮并输入了令牌),出现以下错误:

“错误”:“未找到授权标头。

为什么Authorization标头不包含在请求中?

2 个答案:

答案 0 :(得分:0)

securityDefinitions是不够的,还需要在根级别或操作级别添加security密钥以实际应用安全性。

security:
  - Bearer: []

答案 1 :(得分:0)

扩展@helen 的答案,因为我无法编辑它,此答案适用于使用 Symfony 的人如果您将 NelmioApiDocBundle 与 Symfony 一起使用,

您必须在以下位置添加配置 config/packages/nelmio_api_doc.yaml

所以它看起来像下面:

    documentation:
        info:
            title: App name
            description: This is an awesome app!
            version: 1.0.0
        securityDefinitions:
            Bearer:
                type: apiKey
                description: 'Value: Bearer {jwt}'
                name: Authorization
                in: header
        security:
            - Bearer: []