diff --git a/goofy-client/libs/environment-shared/test/environment.ts b/goofy-client/libs/environment-shared/test/environment.ts index de6f7afa9c05d1b4b7577459f64c99f065cfd1f4..cc2087783f95d60e5737c1f0c0e6d424d8936342 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 6777f34adce610fa06b2a876a1df4f26a6c6fb2d..5c52ccbdeb9f770958792394ca4ec0937cc25fba 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 0000000000000000000000000000000000000000..4fdc348155340e68ada54f504af2c0fc2520c348 --- /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 ac70c5ce84c98e92387741f8ca3d693f446e3b6a..8620ce3de24feddb760b092dcfa7fd347fb0b069 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>