Show API требует аутентификации с токеном носителя - PullRequest
0 голосов
/ 25 апреля 2019

Текущая ситуация

У меня есть приложение 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));
    }

}

И теперь в моей конфигурации пользовательского интерфейса у меня есть следующий вывод: enter image description here Если я добавлю Значение носителя канала-носителя в поле значение APIработает отлично.enter image description here


Вопросы

  1. Является ли правильный способ определения описания безопасности для токена на предъявителя?
  2. Существует ли способ немедленно показать в пользовательском интерфейсе, что API защищен? Я представляю что-то вроде замка слева или справа от имени API.
...