我有使用 Spring MVC 实现的简单 REST 服务。我决定用 Springfox 和 Swagger 2.0 来描述它们。在我开始添加安全模式和上下文之前,一切似乎都很好。我对某些端点使用 HTTP Basic 身份验证,对其他端点使用基于令牌的身份验证。无论我做什么,我都看不到任何设置 HTTP 基本身份验证凭据或在 Swagger UI 中指定令牌的选项。下面是我的配置。为简单起见,我将这两种模式应用于所有端点。
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket apiV1() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.pathMapping("/api/v1")
.securitySchemes(newArrayList(new BasicAuth("xBasic"),
new ApiKey("X-Auth-Token", "xAuthToken", "header")))
.securityContexts(newArrayList(xBasicSecurityContext(), xAuthTokenSecurityContext()))
}
private SecurityContext xBasicSecurityContext() {
SecurityContext.builder()
.securityReferences(newArrayList(new SecurityReference("xBasic",
new AuthorizationScope[0])))
.build()
}
private SecurityContext xAuthTokenSecurityContext() {
SecurityContext.builder()
.securityReferences(newArrayList(new SecurityReference("xAuthToken",
new AuthorizationScope[0])))
.build()
}