Текущая ситуация
У меня есть приложение Spring Boot с некоторыми REST API, для которых требуется токен Bearer.Я использую Springfox для автоматической генерации чванства API REST.
Я определил следующий класс конфигурации чванства на основе этого ответа :
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Autowired
private TypeResolver typeResolver;
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
// .host("leonardo.cloud.reply.eu")
.useDefaultResponseMessages(false).select()
.apis(RequestHandlerSelectors.basePackage("it.reply.speech.analysis")).paths(PathSelectors.any())
.build().genericModelSubstitutes(ResponseEntity.class)
.alternateTypeRules(newRule(
typeResolver.resolve(DeferredResult.class,
typeResolver.resolve(ResponseEntity.class, WildcardType.class)),
typeResolver.resolve(WildcardType.class)))
.securitySchemes(Lists.newArrayList(apiKey())).apiInfo(apiInfo())
.securityContexts(Arrays.asList(securityContext()));
}
private ApiInfo apiInfo() {
return new ApiInfo("SpeechToText API", "API for Edison's SpeechToText data access", "0.1", "Terms of service",
new Contact("Blue Cognitive", "", ""), "No license", "", Collections.emptyList());
}
private ApiKey apiKey() {
return new ApiKey("apiKey", "Authorization", "header");
}
private SecurityContext securityContext() {
return SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.any()).build();
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("apiKey", authorizationScopes));
}
}
И теперь в моей конфигурации пользовательского интерфейса у меня есть следующий вывод: Если я добавлю Значение носителя канала-носителя в поле значение APIработает отлично.
Вопросы
- Является ли правильный способ определения описания безопасности для токена на предъявителя?
- Существует ли способ немедленно показать в пользовательском интерфейсе, что API защищен? Я представляю что-то вроде замка слева или справа от имени API.