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)
我也对此表示不满.在我的情况下,我使用了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)
我希望这对其他人也有帮助.
| 归档时间: |
|
| 查看次数: |
19964 次 |
| 最近记录: |