Исследуя Интернет, я нашел несколько способов отправки заголовков с помощью swagger для проверки подлинности.
Мой код в настоящее время выглядит следующим образом:
@Value("${swagger.api.title}")
String title;
@Value("${swagger.api.description}")
String description;
@Value("${swagger.api.terms.of.service.url}")
String termsOfServiceUrl;
@Value("${swagger.api.license}")
String license;
@Value("${swagger.api.license.url}")
String licenseUrl;
@Value("${swagger.api.version}")
String version;
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2).select()
.paths(regex(".*" + RestConstants.APPLICATION_NAME + "/.*")).build().apiInfo(apiInfo())
.securitySchemes(Arrays.asList(apiKey())).securityContexts(Arrays.asList(securityContext()));
}
@Bean
public SecurityConfiguration security(){
return SecurityConfigurationBuilder.builder().additionalQueryStringParams(null)
.useBasicAuthenticationWithAccessCodeGrant(false).build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl)
.license(license).licenseUrl(licenseUrl).version(version).build();
}
private ApiKey apiKey(){
return new ApiKey("X-API-key", "X-API-key", "header");
}
private SecurityContext securityContext(){
return SecurityContext.builder().securityReferences(defaultAuth())
.forPaths(PathSelectors.regex(".*" + RestConstants.APPLICATION_NAME + "/.*")).build();
}
private List<SecurityReference> defaultAuth(){
final AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
final AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("X-API-Key", authorizationScopes));
}
Свэггер выглядит следующим образом:
Изображение чванства
НоЗапрос, который он делает при выполнении теста, следующий, где X-API-ключ заголовка не появляется:
curl -X GET "*******" -H "принять: application / json "