From e1ebbf38b8bd4e48103398632b9b38bd9982c51d Mon Sep 17 00:00:00 2001 From: Dimitris ZARRAS Date: Fri, 19 Jan 2024 10:36:44 +0200 Subject: [PATCH 1/2] Deduplicate application properties between default and prod profiles. The majority of the properties in prod profile are the same as the ones in the default profile. --- .../resources/application-prod.properties | 24 ------------------- src/main/resources/application.properties | 1 - 2 files changed, 25 deletions(-) diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 9f97900f..a151c924 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -1,33 +1,9 @@ -# Enables logging of Mongo mapping events -logging.level.org.springframework=INFO -logging.level.org.springframework.boot.actuate.endpoint.web=DEBUG - -management.endpoints.enabled-by-default=true -server.error.includeStacktrace=ALWAYS -server.port=8080 -spring.webflux.base-path=/ - # # Issuer options # -issuer.clientId=pid-issuer -issuer.publicUrl=http://localhost:${server.port}${spring.webflux.base-path} issuer.authorizationServer=https://keycloak-eudi.netcompany-intrasoft.com/realms/pid-issuer-realm -issuer.authorizationServer.introspection=${issuer.authorizationServer}/protocol/openid-connect/token/introspect -issuer.authorizationServer.userinfo=${issuer.authorizationServer}/protocol/openid-connect/userinfo -issuer.credentialResponseEncryption.required=true -issuer.credentialResponseEncryption.algorithmsSupported=RSA-OAEP-256 -issuer.credentialResponseEncryption.encryptionMethods=A128CBC-HS256 -issuer.pid.mso_mdoc.enabled=true issuer.pid.mso_mdoc.encoderUrl=https://preprod.issuer.eudiw.dev/formatter/cbor -issuer.pid.sd_jwt_vc.enabled=true -issuer.pid.sd_jwt_vc.notUseBefore=PT20 -issuer.pid.sd_jwt_vc.complexObjectsSdOption=Structured -issuer.pid.sd_jwt_vc.deferred=true -issuer.pid.issuingCountry=FC -issuer.mdl.enabled=true issuer.mdl.mso_mdoc.encoderUrl=https://preprod.issuer.eudiw.dev/formatter/cbor spring.security.oauth2.resourceserver.opaquetoken.client-id=pid-issuer-srv spring.security.oauth2.resourceserver.opaquetoken.client-secret=zIKAV9DIIIaJCzHCVBPlySgU8KgY68U2 -spring.security.oauth2.resourceserver.opaquetoken.introspection-uri=${issuer.authorizationServer.introspection} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 3941059b..369cdd5c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,3 @@ -# Enables logging of Mongo mapping events logging.level.org.springframework=INFO logging.level.org.springframework.boot.actuate.endpoint.web=DEBUG From af756f5f446fc8167361a7bb048dd7b517fa60bc Mon Sep 17 00:00:00 2001 From: Dimitris ZARRAS Date: Fri, 19 Jan 2024 10:49:34 +0200 Subject: [PATCH 2/2] Remove @EnableWebFlux/@EnableWebFluxSecurity. These are bad annotations that disable various aspects of Spring Boot's autoconfiguration. --- .../ec/eudi/pidissuer/PidIssuerApplication.kt | 25 +++++++------------ src/main/resources/application.properties | 1 + 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/eu/europa/ec/eudi/pidissuer/PidIssuerApplication.kt b/src/main/kotlin/eu/europa/ec/eudi/pidissuer/PidIssuerApplication.kt index 1991d268..03e1df3e 100644 --- a/src/main/kotlin/eu/europa/ec/eudi/pidissuer/PidIssuerApplication.kt +++ b/src/main/kotlin/eu/europa/ec/eudi/pidissuer/PidIssuerApplication.kt @@ -50,6 +50,7 @@ import org.slf4j.LoggerFactory import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerProperties import org.springframework.boot.runApplication +import org.springframework.boot.web.codec.CodecCustomizer import org.springframework.context.ApplicationContextInitializer import org.springframework.context.support.BeanDefinitionDsl import org.springframework.context.support.GenericApplicationContext @@ -59,16 +60,12 @@ import org.springframework.core.env.getProperty import org.springframework.core.env.getRequiredProperty import org.springframework.http.HttpStatus import org.springframework.http.client.reactive.ReactorClientHttpConnector -import org.springframework.http.codec.ServerCodecConfigurer import org.springframework.http.codec.json.KotlinSerializationJsonDecoder import org.springframework.http.codec.json.KotlinSerializationJsonEncoder -import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity import org.springframework.security.config.web.server.ServerHttpSecurity import org.springframework.security.config.web.server.invoke import org.springframework.security.oauth2.server.resource.introspection.SpringReactiveOpaqueTokenIntrospector import org.springframework.security.web.server.authentication.HttpStatusServerEntryPoint -import org.springframework.web.reactive.config.EnableWebFlux -import org.springframework.web.reactive.config.WebFluxConfigurer import org.springframework.web.reactive.function.client.WebClient import org.springframework.web.util.UriComponentsBuilder import reactor.netty.http.client.HttpClient @@ -112,6 +109,7 @@ internal object WebClients { } } +@OptIn(ExperimentalSerializationApi::class) fun beans(clock: Clock) = beans { // // Adapters (out ports) @@ -322,17 +320,14 @@ fun beans(clock: Clock) = beans { // Other // bean { - object : WebFluxConfigurer { - @OptIn(ExperimentalSerializationApi::class) - override fun configureHttpMessageCodecs(configurer: ServerCodecConfigurer) { - val json = Json { - explicitNulls = false - ignoreUnknownKeys = true - } - configurer.defaultCodecs().kotlinSerializationJsonDecoder(KotlinSerializationJsonDecoder(json)) - configurer.defaultCodecs().kotlinSerializationJsonEncoder(KotlinSerializationJsonEncoder(json)) - configurer.defaultCodecs().enableLoggingRequestDetails(true) + CodecCustomizer { + val json = Json { + explicitNulls = false + ignoreUnknownKeys = true } + it.defaultCodecs().kotlinSerializationJsonDecoder(KotlinSerializationJsonDecoder(json)) + it.defaultCodecs().kotlinSerializationJsonEncoder(KotlinSerializationJsonEncoder(json)) + it.defaultCodecs().enableLoggingRequestDetails(true) } } } @@ -388,8 +383,6 @@ fun BeanDefinitionDsl.initializer(): ApplicationContextInitializer { initialize(it) } @SpringBootApplication -@EnableWebFlux -@EnableWebFluxSecurity class PidIssuerApplication fun main(args: Array) { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 369cdd5c..ac40c937 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,6 +4,7 @@ logging.level.org.springframework.boot.actuate.endpoint.web=DEBUG management.endpoints.enabled-by-default=true server.error.includeStacktrace=ALWAYS server.port=8080 +spring.main.web-application-type=reactive spring.webflux.base-path=/ #