diff --git a/clearing-parent/backend-api/pom.xml b/clearing-parent/backend-api/pom.xml index 1777aa262..6e33c26e8 100644 --- a/clearing-parent/backend-api/pom.xml +++ b/clearing-parent/backend-api/pom.xml @@ -48,6 +48,16 @@ backend-api + + + src/main/resources + + application.yaml + keycloak.json + + false + + org.apache.maven.plugins diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackendApiSettings.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackendApiSettings.java new file mode 100644 index 000000000..849324c56 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackendApiSettings.java @@ -0,0 +1,20 @@ +package ru.spcex.clearing.backendapi.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; + +@Component +@PropertySource("file:${spring.config.location}/application.yaml") +@ConfigurationProperties("backend-api") +public class BackendApiSettings { + public String getExampleSetting() { + return exampleSetting; + } + + public void setExampleSetting(String exampleSetting) { + this.exampleSetting = exampleSetting; + } + + private String exampleSetting; +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/SimpleController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/DefaultController.java similarity index 78% rename from clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/SimpleController.java rename to clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/DefaultController.java index ced569d5a..210417b99 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/SimpleController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/DefaultController.java @@ -3,14 +3,16 @@ package ru.spcex.clearing.backendapi.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; +import ru.spcex.clearing.backendapi.config.BackendApiSettings; @Controller("/") -public class SimpleController implements InitializingBean { +public class DefaultController implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping(method = RequestMethod.GET, path = "/anonymous/method1", produces = MediaType.TEXT_PLAIN_VALUE) @@ -27,8 +29,12 @@ public class SimpleController implements InitializingBean { return "use post"; } + @Autowired + private BackendApiSettings settings; + @Override public void afterPropertiesSet() throws Exception { log.info("controller started"); + log.info("settings example {}", settings.getExampleSetting()); } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakJsonSettingConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakJsonSettingConfig.java index 80fe3e1fb..a841d29cd 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakJsonSettingConfig.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakJsonSettingConfig.java @@ -6,26 +6,21 @@ import org.keycloak.adapters.KeycloakDeployment; import org.keycloak.adapters.KeycloakDeploymentBuilder; import org.keycloak.adapters.springsecurity.config.KeycloakSpringConfigResolverWrapper; import org.keycloak.representations.adapters.config.AdapterConfig; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import java.io.IOException; @Configuration public class KeycloakJsonSettingConfig { - private final Resource keycloakJson; - - public KeycloakJsonSettingConfig() { - this.keycloakJson = new ClassPathResource("keycloak.json"); - if (!this.keycloakJson.exists()) { - throw new IllegalStateException("cannot find keycloak configuration"); - } - } + @Value("file:${spring.config.location}/keycloak.json") + private Resource keycloakJson; @Bean public KeycloakConfigResolver keycloakConfigResolver() throws IOException { + if (!keycloakJson.isReadable()) throw new IllegalStateException("cannot read keycloak.json settings from spring.config.location"); ObjectMapper json = new ObjectMapper(); AdapterConfig adapterConfig = json.readValue(keycloakJson.getInputStream(), AdapterConfig.class); KeycloakDeployment build = KeycloakDeploymentBuilder.build(adapterConfig); diff --git a/clearing-parent/backend-api/src/main/resources/application.properties b/clearing-parent/backend-api/src/main/resources/application.properties deleted file mode 100644 index b16789592..000000000 --- a/clearing-parent/backend-api/src/main/resources/application.properties +++ /dev/null @@ -1,24 +0,0 @@ -server.port = 8080 -server.servlet.context-path=/backend-api -spring.main.web-application-type=servlet -logging.level.root=warn - -#keycloak -#keycloak.auth-server-url=http://10.200.200.147:8080/ -#keycloak.realm=master -#keycloak.resource=clearing -#keycloak.public-client=true -#keycloak.credentials.secret=WnOVCxcAmrUYc8IjiFHOuRif5Oesoyfr -#keycloak.security-constraints[0].authRoles[0]=admin -#keycloak.security-constraints[0].securityCollections[0].patterns[0]=/backend-api/users/* - - -#keycloak.policy-enforcer-config.paths[0].path=/* -#keycloak.policy-enforcer-config.paths[0].enforcementMode=ENFORCING -#keycloak.policy-enforcer-config.paths[1].path=/backend-api/anonymous/method1 -#keycloak.policy-enforcer-config.paths[1].enforcementMode=DISABLED -#keycloak.security-constraints[1].auth-roles[0]=* -#keycloak.security-constraints[1].security-collections[0].patterns[0]=/backend-api/anonymous/method1 - -#keycloak.security-constraints[1].securityCollections[0].name=anonymous-methods -#keycloak.security-constraints[1].securityCollections[0].patterns[0]=/backend-api/anonymous/method1 diff --git a/clearing-parent/backend-api/src/main/resources/application.yaml b/clearing-parent/backend-api/src/main/resources/application.yaml new file mode 100644 index 000000000..350402939 --- /dev/null +++ b/clearing-parent/backend-api/src/main/resources/application.yaml @@ -0,0 +1,31 @@ +server: + port: 8080 + servlet: + context-path: /backend-api +spring: + main: + web-application-type: servlet + +backend-api: + example-setting: test + + +##keycloak +##keycloak.auth-server-url=http://10.200.200.147:8080/ +##keycloak.realm=master +##keycloak.resource=clearing +##keycloak.public-client=true +##keycloak.credentials.secret=WnOVCxcAmrUYc8IjiFHOuRif5Oesoyfr +##keycloak.security-constraints[0].authRoles[0]=admin +##keycloak.security-constraints[0].securityCollections[0].patterns[0]=/backend-api/users/* +# +# +##keycloak.policy-enforcer-config.paths[0].path=/* +##keycloak.policy-enforcer-config.paths[0].enforcementMode=ENFORCING +##keycloak.policy-enforcer-config.paths[1].path=/backend-api/anonymous/method1 +##keycloak.policy-enforcer-config.paths[1].enforcementMode=DISABLED +##keycloak.security-constraints[1].auth-roles[0]=* +##keycloak.security-constraints[1].security-collections[0].patterns[0]=/backend-api/anonymous/method1 +# +##keycloak.security-constraints[1].securityCollections[0].name=anonymous-methods +##keycloak.security-constraints[1].securityCollections[0].patterns[0]=/backend-api/anonymous/method1 \ No newline at end of file diff --git a/clearing-parent/backend-api/src/main/resources/keycloak.json b/clearing-parent/backend-api/src/main/resources/keycloak.json index 9bf0d2e54..d9ba176b0 100644 --- a/clearing-parent/backend-api/src/main/resources/keycloak.json +++ b/clearing-parent/backend-api/src/main/resources/keycloak.json @@ -7,7 +7,7 @@ "enable-cors" : true, "cors-max-age" : 1000, "cors-allowed-methods" : "POST, PUT, DELETE, GET", - "cors-exposed-headers" : "WWW-Authenticate, My-custom-exposed-Header", + "cors-exposed-headers" : "WWW-Authenticate", "bearer-only" : true, "enable-basic-auth" : false, "expose-token" : false, diff --git a/z-distr/pom.xml b/z-distr/pom.xml index 00945f5ed..b011b9fc9 100644 --- a/z-distr/pom.xml +++ b/z-distr/pom.xml @@ -90,9 +90,20 @@ copy - ${folder_root_clearing_backend-api}/target/backend-api.jar - - ${folder.clearing.distr.modules}/backend-api/backend-api.jar + + + ${folder_root_clearing_backend-api}/target/backend-api.jar + ${folder.clearing.distr.modules}/backend-api/backend-api.jar + + + ${folder_root_clearing_backend-api}/src/main/resources/application.yaml + ${folder.clearing.distr.modules}/backend-api/application.yaml + + + ${folder_root_clearing_backend-api}/src/main/resources/keycloak.json + ${folder.clearing.distr.modules}/backend-api/keycloak.json + + diff --git a/z-distr/src/main/resources/distr/modules/backend-api/Dockerfile b/z-distr/src/main/resources/distr/modules/backend-api/Dockerfile index 57bdca9dd..03c75cfc2 100644 --- a/z-distr/src/main/resources/distr/modules/backend-api/Dockerfile +++ b/z-distr/src/main/resources/distr/modules/backend-api/Dockerfile @@ -1,5 +1,7 @@ FROM debian:stable-20220125-jdk17 ADD backend-api.jar /opt/clearing/bin/backend-api.jar +ADD application.yaml /opt/clearing/bin/application.yaml +ADD keycloak.json /opt/clearing/bin/keycloak.json USER root -ENTRYPOINT java -jar /opt/clearing/bin/backend-api.jar +ENTRYPOINT java -jar /opt/clearing/bin/backend-api.jar --spring.config.location=/opt/clearing/bin/ \ No newline at end of file