如何在Swagger Spec(swagger.json)中表示“Authorization:Bearer <token>”
我想传达的authentication/安全scheme需要设置一个标题如下:
Authorization: Bearer <token>
这是我基于swagger文档的基础 :
securityDefinitions: APIKey: type: apiKey name: Authorization in: header security: - APIKey: []
提前致谢!
也许这可以帮助:
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编辑器网页中也有几个例子,它们有更复杂的安全configuration可以帮助你。
为什么“可接受的答案”有效……但这对我来说还不够
这在规范中起作用。 至lessswagger-tools
(版本0.10.1)validation它是有效的。
但是,如果您使用其他工具(如swagger-codegen
(版本2.1.6)),则会发现一些困难,即使生成的客户端包含身份validation定义,如下所示:
this.authentications = { 'Bearer': {type: 'apiKey', 'in': 'header', name: 'Authorization'} };
在调用方法(端点)之前,无法将标记传递到标头。 看看这个函数签名:
this.rootGet = function(callback) { ... }
这意味着,我只传递callback(在其他情况下查询参数等)没有令牌,这导致请求到服务器的不正确的生成。
我的select
不幸的是,这不是“漂亮”,但它的工作,直到我在Swagger上获得JWT令牌支持。
注:正在讨论中
- 安全性:增加对承载authenticationscheme#583的授权头的支持
- 安全性定义的可扩展性? #460
所以,它是像标准头一样处理authentication。 在path
对象上追加一个标题参数表:
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'
这将在方法签名上生成一个带有新参数的客户端:
this.rootGet = function(authorization, callback) { // ... var headerParams = { 'authorization': authorization }; // ... }
要正确使用此方法,只需传递“完整string”
// 'token' and 'cb' comes from elsewhere var header = 'Bearer ' + token; sdk.rootGet(header, cb);
和工作。
OpenAPI 3.0现在支持原生的承载/ JWTauthentication。 它是这样定义的:
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规范!)支持此function。