From bdf347c867368301cc5bcf0695e5f9a322716dc4 Mon Sep 17 00:00:00 2001 From: Christoph Rogalla Date: Mon, 5 Aug 2024 20:49:55 +0200 Subject: [PATCH 1/5] add starter --- sample/microservicesStarter/startAuftrag.bat | 2 ++ sample/microservicesStarter/startPerson.bat | 2 ++ sample/microservicesStarter/startShop.bat | 2 ++ sample/microservicesStarter/starter.bat | 9 +++++++ ...h2ResourceServerSecurityConfiguration.java | 25 +++++++++++++++++-- 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 sample/microservicesStarter/startAuftrag.bat create mode 100644 sample/microservicesStarter/startPerson.bat create mode 100644 sample/microservicesStarter/startShop.bat create mode 100644 sample/microservicesStarter/starter.bat diff --git a/sample/microservicesStarter/startAuftrag.bat b/sample/microservicesStarter/startAuftrag.bat new file mode 100644 index 0000000..99964df --- /dev/null +++ b/sample/microservicesStarter/startAuftrag.bat @@ -0,0 +1,2 @@ +cd C:\Users\chris\Desktop\Uni\Projektarbeit II\java-starter\sample\auftrag +cmd.exe /k "mvn clean install docker:run -Pdocker" \ No newline at end of file diff --git a/sample/microservicesStarter/startPerson.bat b/sample/microservicesStarter/startPerson.bat new file mode 100644 index 0000000..6665851 --- /dev/null +++ b/sample/microservicesStarter/startPerson.bat @@ -0,0 +1,2 @@ +cd C:\Users\chris\Desktop\Uni\Projektarbeit II\java-starter\sample\person +cmd.exe /k "mvn clean install docker:run -Pdocker" \ No newline at end of file diff --git a/sample/microservicesStarter/startShop.bat b/sample/microservicesStarter/startShop.bat new file mode 100644 index 0000000..a26ea1f --- /dev/null +++ b/sample/microservicesStarter/startShop.bat @@ -0,0 +1,2 @@ +cd C:\Users\chris\Desktop\Uni\Projektarbeit II\java-starter\sample\shop +cmd.exe /k "mvn clean install docker:run -Pdocker" \ No newline at end of file diff --git a/sample/microservicesStarter/starter.bat b/sample/microservicesStarter/starter.bat new file mode 100644 index 0000000..03b46fa --- /dev/null +++ b/sample/microservicesStarter/starter.bat @@ -0,0 +1,9 @@ +start cmd.exe /k "startPerson.bat" + +timeout /t 5 /nobreak + +start cmd.exe /k "startAuftrag.bat" + +timeout /t 5 /nobreak + +start cmd.exe /k "startShop.bat" \ No newline at end of file diff --git a/sample/shop/app/src/main/java/de/conciso/shop/OAuth2ResourceServerSecurityConfiguration.java b/sample/shop/app/src/main/java/de/conciso/shop/OAuth2ResourceServerSecurityConfiguration.java index d77c634..9053780 100644 --- a/sample/shop/app/src/main/java/de/conciso/shop/OAuth2ResourceServerSecurityConfiguration.java +++ b/sample/shop/app/src/main/java/de/conciso/shop/OAuth2ResourceServerSecurityConfiguration.java @@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -26,6 +27,11 @@ import org.springframework.security.oauth2.jwt.JwtDecoder; import org.springframework.security.oauth2.jwt.NimbusJwtDecoder; import org.springframework.security.web.SecurityFilterChain; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; + +import java.util.Arrays; @Configuration @EnableWebSecurity @@ -37,14 +43,15 @@ public class OAuth2ResourceServerSecurityConfiguration { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return http - .cors(Customizer.withDefaults()) + .cors(cors -> cors.configurationSource(angularStarterCorsConfig())) .csrf(AbstractHttpConfigurer::disable) .httpBasic(AbstractHttpConfigurer::disable) .formLogin(AbstractHttpConfigurer::disable) .sessionManagement(httpSecuritySessionManagementConfigurer -> httpSecuritySessionManagementConfigurer.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .authorizeHttpRequests((authorize) -> authorize .requestMatchers("/actuator/**").permitAll() - .requestMatchers("/api/**").authenticated() + .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll() + .anyRequest().authenticated() ) .oauth2ResourceServer(httpSecurityOAuth2ResourceServerConfigurer -> httpSecurityOAuth2ResourceServerConfigurer.jwt(Customizer.withDefaults())) .build(); @@ -55,4 +62,18 @@ JwtDecoder jwtDecoder() { return NimbusJwtDecoder.withJwkSetUri(this.jwkSetUri).build(); } + + @Bean + public CorsConfigurationSource angularStarterCorsConfig() { + CorsConfiguration configuration = new CorsConfiguration(); + configuration.setAllowedOrigins(Arrays.asList("*")); + configuration.setAllowedMethods(Arrays.asList("*")); + configuration.setAllowedHeaders(Arrays.asList("*")); + configuration.setAllowCredentials(true); + configuration.setMaxAge(3600L); + + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", configuration); + return source; + } } From e1c5c310a9f5b04f15bc951aded8acf1b49a73b7 Mon Sep 17 00:00:00 2001 From: Christoph Rogalla Date: Tue, 6 Aug 2024 17:52:31 +0200 Subject: [PATCH 2/5] fix: unauthorized Problem --- sample/kubernetes/docker/java-starter-realm.json | 14 +++++++------- .../OAuth2ResourceServerSecurityConfiguration.java | 1 - 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/sample/kubernetes/docker/java-starter-realm.json b/sample/kubernetes/docker/java-starter-realm.json index fba570b..780ec3e 100644 --- a/sample/kubernetes/docker/java-starter-realm.json +++ b/sample/kubernetes/docker/java-starter-realm.json @@ -411,7 +411,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "/realms/java-starter-realm/account/*" ], - "webOrigins" : [ ], + "webOrigins" : [ "http://localhost:4200" ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, @@ -439,7 +439,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "/realms/java-starter-realm/account/*" ], - "webOrigins" : [ ], + "webOrigins" : [ "http://localhost:4200" ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, @@ -475,7 +475,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ ], - "webOrigins" : [ ], + "webOrigins" : [ "http://localhost:4200" ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, @@ -501,7 +501,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ ], - "webOrigins" : [ ], + "webOrigins" : [ "http://localhost:4200" ], "notBefore" : 0, "bearerOnly" : true, "consentRequired" : false, @@ -526,7 +526,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "http://localhost:8080/*" ], - "webOrigins" : [ ], + "webOrigins" : [ "http://localhost:4200" ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, @@ -575,7 +575,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ ], - "webOrigins" : [ ], + "webOrigins" : [ "http://localhost:4200" ], "notBefore" : 0, "bearerOnly" : true, "consentRequired" : false, @@ -603,7 +603,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "/admin/java-starter-realm/console/*" ], - "webOrigins" : [ "+" ], + "webOrigins" : [ "http://localhost:4200" ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, diff --git a/sample/shop/app/src/main/java/de/conciso/shop/OAuth2ResourceServerSecurityConfiguration.java b/sample/shop/app/src/main/java/de/conciso/shop/OAuth2ResourceServerSecurityConfiguration.java index 9053780..c6ccaaf 100644 --- a/sample/shop/app/src/main/java/de/conciso/shop/OAuth2ResourceServerSecurityConfiguration.java +++ b/sample/shop/app/src/main/java/de/conciso/shop/OAuth2ResourceServerSecurityConfiguration.java @@ -69,7 +69,6 @@ public CorsConfigurationSource angularStarterCorsConfig() { configuration.setAllowedOrigins(Arrays.asList("*")); configuration.setAllowedMethods(Arrays.asList("*")); configuration.setAllowedHeaders(Arrays.asList("*")); - configuration.setAllowCredentials(true); configuration.setMaxAge(3600L); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); From d8d4c6d9a27627ed7b5009f87edf0d62b1dcf7c9 Mon Sep 17 00:00:00 2001 From: Christoph Rogalla Date: Fri, 30 Aug 2024 14:28:34 +0200 Subject: [PATCH 3/5] add CrossOrigin --- .../main/java/de/conciso/starter/PersonController.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/step0100/rest-api/src/main/java/de/conciso/starter/PersonController.java b/step0100/rest-api/src/main/java/de/conciso/starter/PersonController.java index 9d3f888..6a73e87 100644 --- a/step0100/rest-api/src/main/java/de/conciso/starter/PersonController.java +++ b/step0100/rest-api/src/main/java/de/conciso/starter/PersonController.java @@ -2,14 +2,10 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController +@CrossOrigin("http://localhost:4200") @RequestMapping("/api/person") public class PersonController { From 50e8f3aff20c64de9817404c93ac35b29673b273 Mon Sep 17 00:00:00 2001 From: Christoph Rogalla Date: Fri, 30 Aug 2024 14:39:54 +0200 Subject: [PATCH 4/5] fix: webOrigins with keycloak on Startup --- sample/kubernetes/docker/java-starter-realm.json | 12 ++++++------ .../src/test/docker/keycloak/java-starter-realm.json | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sample/kubernetes/docker/java-starter-realm.json b/sample/kubernetes/docker/java-starter-realm.json index 780ec3e..3f8d612 100644 --- a/sample/kubernetes/docker/java-starter-realm.json +++ b/sample/kubernetes/docker/java-starter-realm.json @@ -411,7 +411,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "/realms/java-starter-realm/account/*" ], - "webOrigins" : [ "http://localhost:4200" ], + "webOrigins" : [ ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, @@ -439,7 +439,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "/realms/java-starter-realm/account/*" ], - "webOrigins" : [ "http://localhost:4200" ], + "webOrigins" : [ ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, @@ -475,7 +475,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ ], - "webOrigins" : [ "http://localhost:4200" ], + "webOrigins" : [ ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, @@ -501,7 +501,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ ], - "webOrigins" : [ "http://localhost:4200" ], + "webOrigins" : [ ], "notBefore" : 0, "bearerOnly" : true, "consentRequired" : false, @@ -575,7 +575,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ ], - "webOrigins" : [ "http://localhost:4200" ], + "webOrigins" : [ ], "notBefore" : 0, "bearerOnly" : true, "consentRequired" : false, @@ -603,7 +603,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "/admin/java-starter-realm/console/*" ], - "webOrigins" : [ "http://localhost:4200" ], + "webOrigins" : [ ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, diff --git a/sample/shop/docker/src/test/docker/keycloak/java-starter-realm.json b/sample/shop/docker/src/test/docker/keycloak/java-starter-realm.json index fba570b..3f8d612 100644 --- a/sample/shop/docker/src/test/docker/keycloak/java-starter-realm.json +++ b/sample/shop/docker/src/test/docker/keycloak/java-starter-realm.json @@ -526,7 +526,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "http://localhost:8080/*" ], - "webOrigins" : [ ], + "webOrigins" : [ "http://localhost:4200" ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, @@ -603,7 +603,7 @@ "alwaysDisplayInConsole" : false, "clientAuthenticatorType" : "client-secret", "redirectUris" : [ "/admin/java-starter-realm/console/*" ], - "webOrigins" : [ "+" ], + "webOrigins" : [ ], "notBefore" : 0, "bearerOnly" : false, "consentRequired" : false, From b820b5c06847c4612dcb3270b2ed3a97625ea0bd Mon Sep 17 00:00:00 2001 From: Chrisy455 <110563780+Chrisy455@users.noreply.github.com> Date: Mon, 23 Sep 2024 19:41:37 +0200 Subject: [PATCH 5/5] Deleted Starter Delete sample/microservicesStarter directory --- sample/microservicesStarter/startAuftrag.bat | 2 -- sample/microservicesStarter/startPerson.bat | 2 -- sample/microservicesStarter/startShop.bat | 2 -- sample/microservicesStarter/starter.bat | 9 --------- 4 files changed, 15 deletions(-) delete mode 100644 sample/microservicesStarter/startAuftrag.bat delete mode 100644 sample/microservicesStarter/startPerson.bat delete mode 100644 sample/microservicesStarter/startShop.bat delete mode 100644 sample/microservicesStarter/starter.bat diff --git a/sample/microservicesStarter/startAuftrag.bat b/sample/microservicesStarter/startAuftrag.bat deleted file mode 100644 index 99964df..0000000 --- a/sample/microservicesStarter/startAuftrag.bat +++ /dev/null @@ -1,2 +0,0 @@ -cd C:\Users\chris\Desktop\Uni\Projektarbeit II\java-starter\sample\auftrag -cmd.exe /k "mvn clean install docker:run -Pdocker" \ No newline at end of file diff --git a/sample/microservicesStarter/startPerson.bat b/sample/microservicesStarter/startPerson.bat deleted file mode 100644 index 6665851..0000000 --- a/sample/microservicesStarter/startPerson.bat +++ /dev/null @@ -1,2 +0,0 @@ -cd C:\Users\chris\Desktop\Uni\Projektarbeit II\java-starter\sample\person -cmd.exe /k "mvn clean install docker:run -Pdocker" \ No newline at end of file diff --git a/sample/microservicesStarter/startShop.bat b/sample/microservicesStarter/startShop.bat deleted file mode 100644 index a26ea1f..0000000 --- a/sample/microservicesStarter/startShop.bat +++ /dev/null @@ -1,2 +0,0 @@ -cd C:\Users\chris\Desktop\Uni\Projektarbeit II\java-starter\sample\shop -cmd.exe /k "mvn clean install docker:run -Pdocker" \ No newline at end of file diff --git a/sample/microservicesStarter/starter.bat b/sample/microservicesStarter/starter.bat deleted file mode 100644 index 03b46fa..0000000 --- a/sample/microservicesStarter/starter.bat +++ /dev/null @@ -1,9 +0,0 @@ -start cmd.exe /k "startPerson.bat" - -timeout /t 5 /nobreak - -start cmd.exe /k "startAuftrag.bat" - -timeout /t 5 /nobreak - -start cmd.exe /k "startShop.bat" \ No newline at end of file