backend-api config yaml example

This commit is contained in:
ialbert 2022-08-03 17:18:49 +03:00
parent a7a057c4d4
commit 35cfaf010d
9 changed files with 90 additions and 39 deletions

View file

@ -48,6 +48,16 @@
</dependencyManagement>
<build>
<finalName>backend-api</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>application.yaml</exclude>
<exclude>keycloak.json</exclude>
</excludes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View file

@ -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;
}

View file

@ -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());
}
}

View file

@ -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);

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -90,9 +90,20 @@
<goal>copy</goal>
</goals>
<configuration>
<sourceFile>${folder_root_clearing_backend-api}/target/backend-api.jar
</sourceFile>
<destinationFile>${folder.clearing.distr.modules}/backend-api/backend-api.jar</destinationFile>
<fileSets>
<fileSet>
<sourceFile>${folder_root_clearing_backend-api}/target/backend-api.jar</sourceFile>
<destinationFile>${folder.clearing.distr.modules}/backend-api/backend-api.jar</destinationFile>
</fileSet>
<fileSet>
<sourceFile>${folder_root_clearing_backend-api}/src/main/resources/application.yaml</sourceFile>
<destinationFile>${folder.clearing.distr.modules}/backend-api/application.yaml</destinationFile>
</fileSet>
<fileSet>
<sourceFile>${folder_root_clearing_backend-api}/src/main/resources/keycloak.json</sourceFile>
<destinationFile>${folder.clearing.distr.modules}/backend-api/keycloak.json</destinationFile>
</fileSet>
</fileSets>
</configuration>
</execution>
</executions>

View file

@ -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/