swagger 3.x中基于承载令牌的身份验证

时间:2017-12-05 18:16:53

标签: swagger-ui

我目前正在使用swagger-ui 2.x,以下是我在swagger-ui 2.x中使用的身份验证。

var key = $(this).val(); swaggerUi.api.clientAuthorizations.add("默认",新的SwaggerClient.ApiKeyAuthorization("授权"," Bearer" + key," header" ;));

目前,我将swagger-ui升级到最新的3.x版本,我需要知道如何通过swagger 3.x实现上述目标。我可以进行基于承载令牌的身份验证吗?

2 个答案:

答案 0 :(得分:1)

目前,SwaggerUI 3.x似乎没有这样做的确切方法。但是,您可以在初始化SwaggerUIBundle时添加请求拦截器。在那里,您可以注入授权标头以满足您的要求。

前:

SwaggerUIBundle({
    spec: spec ,
    dom_id: '#someId',
    presets: [
        SwaggerUIBundle.presets.apis
    ],
    requestInterceptor: function(request) {
        request.headers.Authorization = "Bearer " + key;
        return request;
    }
});

答案 1 :(得分:1)

如果您想自动验证“试用”请求,可以使用requestInterceptor。如果您想要提供用户可以输入其承载令牌的UI,则可以将相应的安全定义添加到API定义中:

securityDefinitions:
  bearerAuth:
    type: apiKey
    in: header
    name: Authorization
    description: Enter your bearer token in the format **Bearer <token>**

security:
  - bearerAuth: []

在这种情况下,Swagger UI将显示“授权”按钮。用户可以单击此按钮输入其持有者令牌:

Bearer auth in Swagger UI

如果您使用的是OpenAPI 2.0(fka Swagger 2.0)。

OpenAPI 3.0 supports Bearer authentication本身,以便可以输入不带“Bearer”前缀的承载令牌。