如何使用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();
答案 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)