diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
index c9fe3d51b..6758b8ee6 100644
--- a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
+++ b/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
@@ -20,7 +20,7 @@ import java.util.*
@Configuration
class SwaggerConfig {
@Value("\${swagger.authUrl}")
- val authUrl: String = ""
+ private lateinit var authUrl: String
@Bean
fun opexApi(): Docket {
@@ -94,4 +94,4 @@ class SwaggerConfig {
.scopeSeparator(",")
.build()
}
-}
\ No newline at end of file
+}
diff --git a/BlockchainGateway/bc-gateway-app/pom.xml b/BlockchainGateway/bc-gateway-app/pom.xml
index 71355c3df..298eb2d3f 100644
--- a/BlockchainGateway/bc-gateway-app/pom.xml
+++ b/BlockchainGateway/bc-gateway-app/pom.xml
@@ -103,6 +103,11 @@
bc-gateway-persister-postgres
${bc-gateway.version}
+
+ io.springfox
+ springfox-boot-starter
+ 3.0.0
+
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SwaggerConfig.kt b/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SwaggerConfig.kt
new file mode 100644
index 000000000..9a336a7cb
--- /dev/null
+++ b/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SwaggerConfig.kt
@@ -0,0 +1,97 @@
+package co.nilin.opex.bcgateway.app.config
+
+import org.springframework.beans.factory.annotation.Value
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.Configuration
+import org.springframework.security.core.annotation.AuthenticationPrincipal
+import springfox.documentation.builders.ApiInfoBuilder
+import springfox.documentation.builders.OAuthBuilder
+import springfox.documentation.builders.PathSelectors
+import springfox.documentation.builders.RequestParameterBuilder
+import springfox.documentation.service.*
+import springfox.documentation.spi.DocumentationType
+import springfox.documentation.spi.service.contexts.SecurityContext
+import springfox.documentation.spring.web.plugins.Docket
+import springfox.documentation.swagger.web.SecurityConfiguration
+import springfox.documentation.swagger.web.SecurityConfigurationBuilder
+import java.security.Principal
+import java.util.*
+
+@Configuration
+class SwaggerConfig {
+ @Value("\${swagger.authUrl}")
+ private lateinit var authUrl: String
+
+ @Bean
+ fun opexBCGateway(): Docket {
+ return Docket(DocumentationType.SWAGGER_2)
+ .groupName("opex-bc-gateway")
+ .apiInfo(apiInfo())
+ .select()
+ .paths(PathSelectors.regex("^/actuator.*").negate())
+ .build()
+ .globalRequestParameters(
+ Collections.singletonList(
+ RequestParameterBuilder()
+ .name("content-type")
+ .description("content-type")
+ .`in`(ParameterType.HEADER)
+ .required(true)
+ .build()
+ )
+ )
+ .ignoredParameterTypes(AuthenticationPrincipal::class.java, Principal::class.java)
+ .useDefaultResponseMessages(false)
+ .securitySchemes(Collections.singletonList(oauth()))
+ .securityContexts(Collections.singletonList(securityContext()))
+ }
+
+ private fun apiInfo(): ApiInfo {
+ return ApiInfoBuilder()
+ .title("OPEX API")
+ .description("Backend for opex exchange.")
+ .license("MIT License")
+ .licenseUrl("https://github.com/opexdev/Back-end/blob/feature/1-MVP/LICENSE")
+ .version("0.1")
+ .build()
+ }
+
+ private fun oauth(): SecurityScheme {
+ return OAuthBuilder()
+ .name("opex")
+ .grantTypes(grantTypes())
+ .scopes(scopes())
+ .build()
+ }
+
+ private fun scopes(): List {
+ return listOf(AuthorizationScope("openid", "OpenId"))
+ }
+
+ private fun grantTypes(): List {
+ val tokenUrl = "$authUrl/auth/realms/opex/protocol/openid-connect/token"
+ val grantType = ResourceOwnerPasswordCredentialsGrant(tokenUrl)
+ return Collections.singletonList(grantType)
+ }
+
+ private fun securityContext(): SecurityContext {
+ val securityReference = SecurityReference.builder()
+ .reference("opex")
+ .scopes(emptyArray())
+ .build()
+ return SecurityContext.builder()
+ .securityReferences(Collections.singletonList(securityReference))
+ .operationSelector { true }
+ .build()
+ }
+
+ @Bean
+ fun securityInfo(): SecurityConfiguration {
+ return SecurityConfigurationBuilder.builder()
+ .clientId("admin-cli")
+ .realm("opex")
+ .appName("opex")
+ .scopeSeparator(",")
+ .build()
+ }
+}
diff --git a/BlockchainGateway/bc-gateway-app/src/main/resources/application.yml b/BlockchainGateway/bc-gateway-app/src/main/resources/application.yml
index c21510415..c1698dc75 100644
--- a/BlockchainGateway/bc-gateway-app/src/main/resources/application.yml
+++ b/BlockchainGateway/bc-gateway-app/src/main/resources/application.yml
@@ -29,3 +29,5 @@ spring:
logging:
level:
org.apache.kafka: DEBUG
+
+swagger.authUrl: https://api.opex.dev
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
index 37abadf5e..13860b55e 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
+++ b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
@@ -21,7 +21,7 @@ import java.util.*
@Configuration
class SwaggerConfig {
@Value("\${swagger.authUrl}")
- val authUrl: String = ""
+ private lateinit var authUrl: String
@Bean
fun opexMatchingGateway(): Docket {
@@ -95,4 +95,4 @@ class SwaggerConfig {
.scopeSeparator(",")
.build()
}
-}
\ No newline at end of file
+}
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt
index 76b80d954..eb87f48bf 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt
+++ b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt
@@ -20,7 +20,7 @@ import java.util.*
@Configuration
class SwaggerConfig {
@Value("\${swagger.authUrl}")
- val authUrl: String = ""
+ private lateinit var authUrl: String
@Bean
fun opexWallet(): Docket {
@@ -96,4 +96,4 @@ class SwaggerConfig {
.scopeSeparator(",")
.build()
}
-}
\ No newline at end of file
+}