From de1d54fe3ad69e1251a3fb40f2168c0fd6991669 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Fri, 22 Jan 2021 14:05:19 +0100 Subject: [PATCH] OZG-164 OZG-216 add spring java configuration --- .../environment-shared/test/environment.ts | 4 +- goofy-server/pom.xml | 22 +++++------ .../de/itvsh/goofy/SecurityConfiguration.java | 39 +++++++++++++++++++ pom.xml | 10 ++++- 4 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 goofy-server/src/main/java/de/itvsh/goofy/SecurityConfiguration.java diff --git a/goofy-client/libs/environment-shared/test/environment.ts b/goofy-client/libs/environment-shared/test/environment.ts index de6f7afa9c..cc2087783f 100644 --- a/goofy-client/libs/environment-shared/test/environment.ts +++ b/goofy-client/libs/environment-shared/test/environment.ts @@ -6,7 +6,9 @@ const baseUrl = faker.internet.url(); const environment: Environment = { production: false, - remoteHost: baseUrl + remoteHost: baseUrl, + authServier: faker.internet.url(), + realm: faker.random.word() }; export function createEnvironment(): Environment { diff --git a/goofy-server/pom.xml b/goofy-server/pom.xml index 6777f34adc..5c52ccbdeb 100644 --- a/goofy-server/pom.xml +++ b/goofy-server/pom.xml @@ -52,6 +52,11 @@ <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> --> + <artifactId>spring-boot-starter-security</artifactId> --> + </dependency> <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-spring-boot-starter</artifactId> @@ -92,6 +97,11 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-test</artifactId> + <scope>test</scope> + </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> @@ -118,18 +128,6 @@ </dependency> </dependencies> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.keycloak.bom</groupId> - <artifactId>keycloak-adapter-bom</artifactId> - <version>12.0.2</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> - <build> <finalName>${project.artifactId}</finalName> <plugins> diff --git a/goofy-server/src/main/java/de/itvsh/goofy/SecurityConfiguration.java b/goofy-server/src/main/java/de/itvsh/goofy/SecurityConfiguration.java new file mode 100644 index 0000000000..4fdc348155 --- /dev/null +++ b/goofy-server/src/main/java/de/itvsh/goofy/SecurityConfiguration.java @@ -0,0 +1,39 @@ +package de.itvsh.goofy; + +import org.keycloak.adapters.KeycloakConfigResolver; +import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver; +import org.keycloak.adapters.springsecurity.KeycloakConfiguration; +import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter; +import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpMethod; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.authentication.session.NullAuthenticatedSessionStrategy; +import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy; + +@KeycloakConfiguration +public class SecurityConfiguration extends KeycloakWebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + super.configure(http); + http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // + .and().authorizeRequests()// + .antMatchers(HttpMethod.GET, "/api/environment").permitAll()// + .antMatchers(HttpMethod.GET, "/assets/**").permitAll()// + .antMatchers("/api").authenticated()// + .antMatchers("/api/**").authenticated()// + .anyRequest().denyAll(); + } + + @Bean + public KeycloakConfigResolver keyCloakConfigResolver() { + return new KeycloakSpringBootConfigResolver(); + } + + @Override + protected SessionAuthenticationStrategy sessionAuthenticationStrategy() { + return new NullAuthenticatedSessionStrategy(); + } + +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index ac70c5ce84..8620ce3de2 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <java.version>11</java.version> + <java.version>15</java.version> <spring.boot.version>2.4.2</spring.boot.version> @@ -45,6 +45,14 @@ <type>pom</type> <scope>import</scope> </dependency> + <!-- keycloak --> + <dependency> + <groupId>org.keycloak.bom</groupId> + <artifactId>keycloak-adapter-bom</artifactId> + <version>12.0.2</version> + <type>pom</type> + <scope>import</scope> + </dependency> <dependency> <groupId>de.codecentric</groupId> -- GitLab