swagger: '2.0'
info:
version: 1.0.0
title: Bearer auth example
description: >
An example for how to use Bearer Auth with OpenAPI / Swagger 2.0.
host: basic-auth-server.herokuapp.com
schemes:
- http
- https
securityDefinitions:
Bearer:
type: apiKey
name: Authorization
in: header
description: >-
Enter the token with the `Bearer: ` prefix, e.g. "Bearer abcde12345".
paths:
/:
get:
security:
- Bearer: []
responses:
'200':
description: 'Will send `Authenticated`'
'403':
description: 'You do not have necessary permissions for the resource'
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: localhost
schemes:
- http
- https
paths:
/:
get:
parameters:
-
name: authorization
in: header
type: string
required: true
responses:
'200':
description: 'Will send `Authenticated`'
'403':
description: 'You do not have necessary permissions for the resource'
7条答案
按热度按时间xhv8bpkk1#
也许这能帮上忙:
您可以将其复制并粘贴到https://editor.swagger.io以查看结果。
在Swagger编辑器网站中也有几个具有更复杂安全配置的示例,可以帮助您。
**重要事项:**在此示例中,API使用者必须将“Bearer”前缀作为标记值的一部分。例如,使用Swagger UI的“Authorize”对话框时,需要输入
Bearer your_token
,而不仅仅是your_token
。f4t66c6m2#
OpenAPI 3.0.0中的承载身份验证
OpenAPI 3.0现在原生地支持Bearer/JWT身份验证。
这在Swagger UI 3.4.0+和Swagger Editor 3.1.12+中得到支持(同样,仅适用于OpenAPI 3.0规范!)。
UI将显示“Authorize”按钮,您可以单击该按钮并输入不记名令牌(仅令牌本身,没有“Bearer“前缀)。之后,“try it out”请求将使用
Authorization: Bearer xxxxxx
报头发送。以编程方式添加
Authorization
标题(Swagger UI 3.x)如果您使用Swagger UI,并且由于某种原因,需要以编程方式添加
Authorization
头,而不是让用户单击“Authorize”并输入令牌,则可以使用requestInterceptor
。UI 2.x使用了不同的技术。uubf1zoe3#
使用openapi 3.0.0以JSON格式发布2022年的答案:
6xfqseft4#
"为什么“接受答案”有用...但对我来说还不够"
至少
swagger-tools
(版本0.10.1)将其验证为有效的。但是如果您使用其他工具,如
swagger-codegen
(版本2.1.6),您会发现一些困难,即使生成的客户端包含Authentication定义,如下所示:在调用方法(端点)之前,无法将标记传递到头中。请查看以下函数签名:
这意味着,我只传递回调(在其他情况下是查询参数等)而不传递令牌,这会导致向服务器发送的请求的构建不正确。
"我的选择"
不幸的是,它并不“漂亮”,但它的工作,直到我得到JWT令牌支持的Swagger。
注:中讨论的
因此,它像一个标准头一样处理身份验证。在
path
对象上附加一个头参数:这将生成一个在方法签名上具有新参数的客户端:
要以正确的方式使用此方法,只需将“full string”
而且很管用。
xfyts7mz5#
通过使用requestInterceptor,它对我很有效:
shstlldc6#
我的Hackie解决方法是修改echo-swagger包中的swagger.go文件:
在文件的底部更新window.onload函数,以包含一个正确格式化令牌的requestInterceptor。
}
66bbxpm57#
通过laravel 7 x(“openapi”:“3.0.0”),使用以下代码编辑config\l5-swagger.php
则可以将其添加为端点安全注解: