swagger UI для Spring Boot API: как добавить «аудиторию» в тело запроса для авторизации потока «учетные данные клиента» - PullRequest
0 голосов
/ 17 апреля 2019

Я сгенерировал документацию по пользовательскому интерфейсу swagger из моего весеннего загрузочного API, API защищен с помощью предоставления учетных данных клиента oauth2 от auth0.

Проблема заключается в том, что: в конфигурации swagger я не могу установить "аудитория »параметр тела запроса при авторизации.Таким образом, пользовательский интерфейс Swagger не аутентифицирует API.

Я следую этой документации: https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api

pom.xml:

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>  
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version> 
    </dependency>

SwaggerConfig.Java:

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {                                    


    String token_endpoint = "xxxx";


        @Bean
        public Docket api() {                
            return new Docket(DocumentationType.SWAGGER_2)          
              .select()                                       
              .apis(RequestHandlerSelectors.basePackage("xxxx.controller"))
              .paths(PathSelectors.any())                     
              .build()
              .apiInfo(apiInfo())
              .useDefaultResponseMessages(false)
              .securitySchemes(Arrays.asList(securityScheme()))
              .securityContexts(Arrays.asList(securityContext()));
        }




        private ApiInfo apiInfo() {
            return new ApiInfo(
              "xxxx API", 
              "Some description of API.", 
              "xxxx", 
              "Terms of service", 
              new Contact("xx", "xxxx", "xxxx"), 
              "License of API", "xxxx", Collections.emptyList());
        } 



        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("swagger-ui.html")
              .addResourceLocations("classpath:/META-INF/resources/");

            registry.addResourceHandler("/webjars/**")
              .addResourceLocations("classpath:/META-INF/resources/webjars/");
        }

       @Bean
        public SecurityConfiguration security() {


            return SecurityConfigurationBuilder.builder()
                .appName("xxxx")
                .clientId("")
                .clientSecret("")
                .build();

        }

        private SecurityScheme securityScheme() {
            GrantType grantType = new ClientCredentialsGrant(token_endpoint);
            SecurityScheme oauth = new OAuthBuilder().name("spring_oauth")
                .grantTypes(Arrays.asList(grantType))
                .build();
            return oauth;
        }



        private SecurityContext securityContext() {
            return SecurityContext.builder()
              .forPaths(PathSelectors.any())
              .build();
        }  



    }

Ответ - 403 Запрещено, и это потому, что я не могу предоставить "аудиторию" в теле запроса во время авторизации:

"error_description": "Неглобальные клиентызапрещен доступ к APIv1 "

авторизация в пользовательском интерфейсе Swagger для" типа предоставления учетных данных приложения / клиента *

...