diff --git a/legal-core/pom.xml b/legal-core/pom.xml index 257e8237e9f651e7392a7cb57fb7b234d2fc7b22..0bdc841519c7b931a551bba412361c324c323a79 100644 --- a/legal-core/pom.xml +++ b/legal-core/pom.xml @@ -16,7 +16,6 @@ <description>Legal service core</description> <properties> - <springfox-version>2.7.0</springfox-version> </properties> <dependencies> @@ -152,27 +151,6 @@ <version>1.2.0</version> <scope>test</scope> </dependency> - - <!-- swagger dependencies --> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-swagger2</artifactId> - <version>${springfox-version}</version> - <exclusions> - <exclusion> - <!-- - Excluding com.google.guava:guava:jar:18.0, because it has security vulnerability - --> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-swagger-ui</artifactId> - <version>${springfox-version}</version> - </dependency> </dependencies> <build> diff --git a/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SpringfoxSwaggerHostResolver.java b/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SpringfoxSwaggerHostResolver.java new file mode 100644 index 0000000000000000000000000000000000000000..7addb2c112382e6be197fc4069376d2a8f58e67c --- /dev/null +++ b/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SpringfoxSwaggerHostResolver.java @@ -0,0 +1,34 @@ +package org.opengroup.osdu.legal.swagger; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import io.swagger.v3.oas.models.servers.Server; +import io.swagger.v3.oas.models.OpenAPI; +import springfox.documentation.oas.web.OpenApiTransformationContext; +import springfox.documentation.oas.web.WebMvcOpenApiTransformationFilter; +import springfox.documentation.spi.DocumentationType; + +@Component +@Order(Ordered.LOWEST_PRECEDENCE) +public class SpringfoxSwaggerHostResolver implements WebMvcOpenApiTransformationFilter { + + public boolean supports(DocumentationType delimiter) { + return delimiter == DocumentationType.OAS_30; + } + + public OpenAPI transform(OpenApiTransformationContext<HttpServletRequest> context) { + OpenAPI swagger = context.getSpecification(); + + Server server = swagger.getServers().get(0); + if (server.getUrl().contains(":443")) { + // via the gateway + server.setUrl(server.getUrl().replace(":443", "")); + } + + return swagger; + } + +} diff --git a/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SwaggerDocumentationConfig.java b/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SwaggerDocumentationConfig.java index b7e9d53b21f90260ee65902e1bf9f4cd546db2b1..a29e3e793b064bfc4c9408676227c9cbf877ff3b 100644 --- a/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SwaggerDocumentationConfig.java +++ b/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SwaggerDocumentationConfig.java @@ -1,45 +1,45 @@ package org.opengroup.osdu.legal.swagger; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import org.opengroup.osdu.core.common.model.http.DpsHeaders; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ParameterBuilder; +import org.springframework.context.annotation.Profile; + import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiKey; import springfox.documentation.service.AuthorizationScope; -import springfox.documentation.service.Parameter; +import springfox.documentation.service.ParameterType; +import springfox.documentation.service.RequestParameter; import springfox.documentation.service.SecurityReference; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import springfox.documentation.builders.RequestParameterBuilder; +import springfox.documentation.oas.annotations.EnableOpenApi; @Configuration -@EnableSwagger2 +@EnableOpenApi public class SwaggerDocumentationConfig { public static final String AUTHORIZATION_HEADER = "Authorization"; public static final String DEFAULT_INCLUDE_PATTERN = "/.*"; @Bean public Docket api() { - ParameterBuilder builder = new ParameterBuilder(); - List<Parameter> parameters = new ArrayList<>(); + RequestParameterBuilder builder = new RequestParameterBuilder(); + List<RequestParameter> parameters = new ArrayList<>(); builder.name(DpsHeaders.DATA_PARTITION_ID) .description("tenant") - .defaultValue("common") - .modelRef(new ModelRef("string")) - .parameterType("header") + .in(ParameterType.HEADER) .required(true) .build(); parameters.add(builder.build()); - return new Docket(DocumentationType.SWAGGER_2) - .globalOperationParameters(parameters) + return new Docket(DocumentationType.OAS_30) + .globalRequestParameters(parameters) .select() .apis(RequestHandlerSelectors.basePackage("org.opengroup.osdu.legal.api")) .build() @@ -48,13 +48,13 @@ public class SwaggerDocumentationConfig { } private ApiKey apiKey() { - return new ApiKey("JWT", AUTHORIZATION_HEADER, "header"); + return new ApiKey(AUTHORIZATION_HEADER, AUTHORIZATION_HEADER, "header"); } private SecurityContext securityContext() { return SecurityContext.builder() .securityReferences(defaultAuth()) - .forPaths(PathSelectors.regex(DEFAULT_INCLUDE_PATTERN)) + .operationSelector(o -> PathSelectors.regex(DEFAULT_INCLUDE_PATTERN).test(o.requestMappingPattern())) .build(); } @@ -64,6 +64,6 @@ public class SwaggerDocumentationConfig { AuthorizationScope[] authorizationScopes = new AuthorizationScope[]{authorizationScope}; return Collections.singletonList( - new SecurityReference("JWT", authorizationScopes)); + new SecurityReference(AUTHORIZATION_HEADER, authorizationScopes)); } } diff --git a/pom.xml b/pom.xml index 1f614e119321016feb7c671537e3479af12708b2..af095f8539467ad3763d1c51242f31c25eb31a21 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ <os-core-common.version>0.13.0-rc4</os-core-common.version> <snakeyaml.version>1.26</snakeyaml.version> <resilience4jVersion>1.7.0</resilience4jVersion> + <springfox.version>3.0.0</springfox.version> </properties> <licenses> @@ -92,6 +93,15 @@ </dependency> </dependencies> </dependencyManagement> + + <dependencies> + <!--Swagger--> + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-boot-starter</artifactId> + <version>${springfox.version}</version> + </dependency> + </dependencies> <profiles> <profile> diff --git a/provider/legal-azure/src/main/java/org/opengroup/osdu/legal/azure/security/AADSecurityConfig.java b/provider/legal-azure/src/main/java/org/opengroup/osdu/legal/azure/security/AADSecurityConfig.java index 2ab268ad34fecfed67658c8a5781b2244f2ef6af..935321178b3dbf6ff609f7978d24acdafe7771de 100644 --- a/provider/legal-azure/src/main/java/org/opengroup/osdu/legal/azure/security/AADSecurityConfig.java +++ b/provider/legal-azure/src/main/java/org/opengroup/osdu/legal/azure/security/AADSecurityConfig.java @@ -42,12 +42,14 @@ public class AADSecurityConfig extends WebSecurityConfigurerAdapter { .authorizeRequests() .antMatchers("/", "/index.html", "/v2/api-docs", + "/v3/api-docs", "/configuration/ui", "/swagger-resources/**", "/configuration/security", "/swagger", "/info", "/swagger-ui.html", + "/swagger-ui/**", "/webjars/**").permitAll() .anyRequest().authenticated() .and()