Swagger 2.0在哪里声明Basic Auth Schema

mad*_*fox 19 swagger swagger-ui swagger-2.0

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

在我拥有的资源中:

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

我看了看这里:

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

并且它说"一旦你声明并配置了你在API中支持的授权方案,你就可以使用这些注释来记录资源或特定操作需要哪种授权方案"但我找不到任何谈论的内容.在哪里声明和配置授权方案.

更新:

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

@SwaggerDefinition
public class MyApiDefinition implements ReaderListener {
    public static final String BASIC_AUTH_SCHEME = "basicAuth";

    @Override
    public void beforeScan(Reader reader, Swagger swagger) {
    }

    @Override
    public void afterScan(Reader reader, Swagger swagger) {
        BasicAuthDefinition basicAuthDefinition = new BasicAuthDefinition();
        swagger.addSecurityDefinition(BASIC_AUTH_SCHEME, basicAuthDefinition);
    }
}
Run Code Online (Sandbox Code Playgroud)

lre*_*der 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)
                                     ...
Run Code Online (Sandbox Code Playgroud)

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

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


kuk*_*das 5

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

<securityDefinitions>
  <securityDefinition>
    <name>basicAuth</name>
    <type>basic</type>
  </securityDefinition>
</securityDefinitions>
Run Code Online (Sandbox Code Playgroud)

之后,我能够将它添加到我的资源上,如下所示:

@Api(value = "My REST Interface", authorizations = {@Authorization(value="basicAuth")})
Run Code Online (Sandbox Code Playgroud)

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

"security":[{
  "basicAuth" : []
 }]
Run Code Online (Sandbox Code Playgroud)

和安全定义:

  "securityDefinitions" : {
    "basicAuth" : {
      "type" : "basic"
    }
  }
Run Code Online (Sandbox Code Playgroud)

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