Swagger 2.0在哪里声明Basic Auth Schema

时间:2015-09-03 20:03:12

标签: swagger swagger-ui swagger-2.0

如何使用Swagger 2.0注释定义基本身份验证并将其显示在swagger UI中。

在我拥有的资源中:

D

我看了一眼:

https://github.com/swagger-api/swagger-core/wiki/Annotations#authorization-authorizationscope

它说“一旦你声明并配置了你在API中支持的授权方案,你可以使用这些注释来记录资源或特定操作需要哪种授权方案”但我找不到任何东西讨论了在何处声明和配置授权方案。

更新

我找到了有关如何声明架构的代码,但我仍然没有在UI中看到有关身份验证架构的任何信息。我不确定我错过了什么

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")})
public Response getCategories();

3 个答案:

答案 0 :(得分:17)

使用Springfox 2.6注释时,必须首先将Basic身份验证定义为在配置中设置Docket时的安全方案之一,如下所示:

List<SecurityScheme> schemeList = new ArrayList<>();
schemeList.add(new BasicAuth("basicAuth"));

return new 
  Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo)
                                     .securitySchemes(schemeList)
                                     ...

然后,您可以在服务中使用Springfox注释为要进行身份验证的操作设置Basic Auth:

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")})
public Response getCategories();

答案 1 :(得分:5)

我也对此表示不满。在我的情况下,我使用了swagger-maven-plugin。为了解决这个问题,我在maven插件中添加了这个:

<securityDefinitions>
  <securityDefinition>
    <name>basicAuth</name>
    <type>basic</type>
  </securityDefinition>
</securityDefinitions>

之后我能够在我的资源上添加它:

@Api(value = "My REST Interface", authorizations = {@Authorization(value="basicAuth")})

生成的json包含每个端点的安全元素:

"security":[{
  "basicAuth" : []
 }]

安全定义:

  "securityDefinitions" : {
    "basicAuth" : {
      "type" : "basic"
    }
  }

我希望这对其他人也有帮助。

答案 2 :(得分:0)