From 994ad24e745c140ed45351c815b2155e68795745 Mon Sep 17 00:00:00 2001 From: mrcabbage972 Date: Tue, 7 Jan 2025 21:27:48 +0000 Subject: [PATCH 1/3] jdk upgrade --- build_project.sh | 2 + pom.xml | 43 ++++---- pom_test.xml | 5 + .../integration/config/DatasourceConfig.java | 2 +- .../config/ResourceServerConfig.java | 15 ++- .../integration/config/SecurityConfig.java | 102 +++++++++--------- .../jwt/integration/domain/RandomCity.java | 4 +- .../jwt/integration/domain/Role.java | 4 +- .../jwt/integration/domain/User.java | 5 +- 9 files changed, 99 insertions(+), 83 deletions(-) create mode 100644 build_project.sh create mode 100644 pom_test.xml diff --git a/build_project.sh b/build_project.sh new file mode 100644 index 000000000..434fdbfc2 --- /dev/null +++ b/build_project.sh @@ -0,0 +1,2 @@ +#!/bin/bash +./mvnw clean package \ No newline at end of file diff --git a/pom.xml b/pom.xml index f5d485b08..72fa0dcaa 100644 --- a/pom.xml +++ b/pom.xml @@ -14,18 +14,18 @@ org.springframework.boot spring-boot-starter-parent - 2.0.4.RELEASE + 3.1.0 UTF-8 UTF-8 - 1.8 + 18 9081 127.0.0.1 readme - 1.18.10 + 1.18.30 @@ -45,6 +45,15 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-oauth2-resource-server + + org.springframework.boot @@ -56,26 +65,20 @@ h2 runtime + + jakarta.persistence + jakarta.persistence-api + 3.1.0 + + org.springframework.boot spring-boot-starter-test test - - org.springframework.security - spring-security-jwt - 1.0.7.RELEASE - - - - org.springframework.security.oauth - spring-security-oauth2 - 2.1.0.RELEASE - com.fasterxml.jackson.core jackson-databind - 2.9.10.8 @@ -108,7 +111,7 @@ io.fabric8 docker-maven-plugin true - + 0.26.1 @@ -142,10 +145,10 @@ org.apache.maven.plugins maven-compiler-plugin - 3.8.1 + 3.11.0 - 1.8 - 1.8 + 18 + 18 org.projectlombok @@ -158,4 +161,4 @@ - + \ No newline at end of file diff --git a/pom_test.xml b/pom_test.xml new file mode 100644 index 000000000..c7fc0ff99 --- /dev/null +++ b/pom_test.xml @@ -0,0 +1,5 @@ + + org.springframework.security + spring-security-jwt + 1.0.7.RELEASE + \ No newline at end of file diff --git a/src/main/java/com/nouhoun/springboot/jwt/integration/config/DatasourceConfig.java b/src/main/java/com/nouhoun/springboot/jwt/integration/config/DatasourceConfig.java index c0225d9c4..9fd3259c8 100644 --- a/src/main/java/com/nouhoun/springboot/jwt/integration/config/DatasourceConfig.java +++ b/src/main/java/com/nouhoun/springboot/jwt/integration/config/DatasourceConfig.java @@ -15,7 +15,7 @@ import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; -import javax.persistence.EntityManagerFactory; +import jakarta.persistence.EntityManagerFactory; import javax.sql.DataSource; import java.beans.PropertyVetoException; diff --git a/src/main/java/com/nouhoun/springboot/jwt/integration/config/ResourceServerConfig.java b/src/main/java/com/nouhoun/springboot/jwt/integration/config/ResourceServerConfig.java index 6003a07dc..3f3c262f0 100644 --- a/src/main/java/com/nouhoun/springboot/jwt/integration/config/ResourceServerConfig.java +++ b/src/main/java/com/nouhoun/springboot/jwt/integration/config/ResourceServerConfig.java @@ -4,11 +4,15 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer; import org.springframework.security.oauth2.provider.token.ResourceServerTokenServices; +import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest; + + @Configuration @EnableResourceServer public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @@ -26,10 +30,11 @@ public void configure(ResourceServerSecurityConfigurer resources) throws Excepti @Override public void configure(HttpSecurity http) throws Exception { http - .requestMatchers() - .and() .authorizeRequests() - .antMatchers("/actuator/**", "/api-docs/**").permitAll() - .antMatchers("/springjwt/**" ).authenticated(); + .requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll() + .mvcMatchers("/actuator/**").permitAll() + .mvcMatchers("/api-docs/**").permitAll() + .mvcMatchers("/springjwt/**" ).authenticated() + .and().csrf(AbstractHttpConfigurer::disable); } -} +} \ No newline at end of file diff --git a/src/main/java/com/nouhoun/springboot/jwt/integration/config/SecurityConfig.java b/src/main/java/com/nouhoun/springboot/jwt/integration/config/SecurityConfig.java index 8d71cb221..40b78f030 100644 --- a/src/main/java/com/nouhoun/springboot/jwt/integration/config/SecurityConfig.java +++ b/src/main/java/com/nouhoun/springboot/jwt/integration/config/SecurityConfig.java @@ -5,77 +5,79 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.oauth2.provider.token.DefaultTokenServices; import org.springframework.security.oauth2.provider.token.TokenStore; import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter; import org.springframework.security.oauth2.provider.token.store.JwtTokenStore; +import org.springframework.security.web.SecurityFilterChain; /** * Created by nydiarra on 06/05/17. */ @Configuration @EnableWebSecurity -@EnableGlobalMethodSecurity(prePostEnabled = true) -public class SecurityConfig extends WebSecurityConfigurerAdapter { +@EnableMethodSecurity +public class SecurityConfig { - @Value("${security.signing-key}") - private String signingKey; + @Value("${security.signing-key}") + private String signingKey; - @Value("${security.encoding-strength}") - private Integer encodingStrength; + @Value("${security.encoding-strength}") + private Integer encodingStrength; - @Value("${security.security-realm}") - private String securityRealm; + @Value("${security.security-realm}") + private String securityRealm; - @Bean - @Override - protected AuthenticationManager authenticationManager() throws Exception { - return super.authenticationManager(); - } - @Bean - public BCryptPasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } - @Override - protected void configure(HttpSecurity http) throws Exception { - http - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.STATELESS) - .and() - .httpBasic() - .realmName(securityRealm) - .and() - .csrf() - .disable(); + @Bean + public BCryptPasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } - } + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + http + .sessionManagement(sessionManagement -> sessionManagement + .sessionCreationPolicy(SessionCreationPolicy.STATELESS) + ) + .httpBasic(httpBasic -> httpBasic + .realmName(securityRealm) + ) + .csrf(AbstractHttpConfigurer::disable); + return http.build(); + } - @Bean - public JwtAccessTokenConverter accessTokenConverter() { - JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); - converter.setSigningKey(signingKey); - return converter; - } + @Bean + public JwtAccessTokenConverter accessTokenConverter() { + JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); + converter.setSigningKey(signingKey); + return converter; + } - @Bean - public TokenStore tokenStore() { - return new JwtTokenStore(accessTokenConverter()); - } + @Bean + public TokenStore tokenStore() { + return new JwtTokenStore(accessTokenConverter()); + } - @Bean - @Primary //Making this primary to avoid any accidental duplication with another token service instance of the same name - public DefaultTokenServices tokenServices() { - DefaultTokenServices defaultTokenServices = new DefaultTokenServices(); - defaultTokenServices.setTokenStore(tokenStore()); - defaultTokenServices.setSupportRefreshToken(true); - return defaultTokenServices; - } -} + @Bean + @Primary //Making this primary to avoid any accidental duplication with another token service instance of the same name + public DefaultTokenServices tokenServices() { + DefaultTokenServices defaultTokenServices = new DefaultTokenServices(); + defaultTokenServices.setTokenStore(tokenStore()); + defaultTokenServices.setSupportRefreshToken(true); + return defaultTokenServices; + } + + @Bean + public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception{ + return config.getAuthenticationManager(); + } +} \ No newline at end of file diff --git a/src/main/java/com/nouhoun/springboot/jwt/integration/domain/RandomCity.java b/src/main/java/com/nouhoun/springboot/jwt/integration/domain/RandomCity.java index 2a310e8e6..7583972fa 100644 --- a/src/main/java/com/nouhoun/springboot/jwt/integration/domain/RandomCity.java +++ b/src/main/java/com/nouhoun/springboot/jwt/integration/domain/RandomCity.java @@ -1,6 +1,6 @@ package com.nouhoun.springboot.jwt.integration.domain; -import javax.persistence.*; +import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; @@ -19,4 +19,4 @@ public class RandomCity { @Column(name = "name") private String name; -} +} \ No newline at end of file diff --git a/src/main/java/com/nouhoun/springboot/jwt/integration/domain/Role.java b/src/main/java/com/nouhoun/springboot/jwt/integration/domain/Role.java index b80469b24..c89ddc4a1 100644 --- a/src/main/java/com/nouhoun/springboot/jwt/integration/domain/Role.java +++ b/src/main/java/com/nouhoun/springboot/jwt/integration/domain/Role.java @@ -1,6 +1,6 @@ package com.nouhoun.springboot.jwt.integration.domain; -import javax.persistence.*; +import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; @@ -22,4 +22,4 @@ public class Role { @Column(name="description") private String description; -} +} \ No newline at end of file diff --git a/src/main/java/com/nouhoun/springboot/jwt/integration/domain/User.java b/src/main/java/com/nouhoun/springboot/jwt/integration/domain/User.java index 5eb3af528..52620b8f0 100644 --- a/src/main/java/com/nouhoun/springboot/jwt/integration/domain/User.java +++ b/src/main/java/com/nouhoun/springboot/jwt/integration/domain/User.java @@ -5,7 +5,7 @@ import lombok.Setter; import org.hibernate.validator.constraints.NotEmpty; -import javax.persistence.*; +import jakarta.persistence.*; import java.util.List; /** @@ -45,5 +45,4 @@ public class User { inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id")) private List roles; -} - +} \ No newline at end of file From 66d0c413f78708c1728e0e98d6f3ce145e373d8e Mon Sep 17 00:00:00 2001 From: mrcabbage972 Date: Tue, 7 Jan 2025 21:32:36 +0000 Subject: [PATCH 2/3] migration --- pom.xml | 4 ++ .../config/ResourceServerConfig.java | 37 +------------------ 2 files changed, 5 insertions(+), 36 deletions(-) diff --git a/pom.xml b/pom.xml index 72fa0dcaa..e5fb5cffb 100644 --- a/pom.xml +++ b/pom.xml @@ -53,6 +53,10 @@ org.springframework.boot spring-boot-starter-oauth2-resource-server + + org.springframework.boot + spring-boot-starter-oauth2-client + diff --git a/src/main/java/com/nouhoun/springboot/jwt/integration/config/ResourceServerConfig.java b/src/main/java/com/nouhoun/springboot/jwt/integration/config/ResourceServerConfig.java index 3f3c262f0..3402d15fa 100644 --- a/src/main/java/com/nouhoun/springboot/jwt/integration/config/ResourceServerConfig.java +++ b/src/main/java/com/nouhoun/springboot/jwt/integration/config/ResourceServerConfig.java @@ -1,40 +1,5 @@ package com.nouhoun.springboot.jwt.integration.config; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; -import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; -import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; -import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer; -import org.springframework.security.oauth2.provider.token.ResourceServerTokenServices; +public class ResourceServerConfig { -import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest; - - -@Configuration -@EnableResourceServer -public class ResourceServerConfig extends ResourceServerConfigurerAdapter { - @Autowired - private ResourceServerTokenServices tokenServices; - - @Value("${security.jwt.resource-ids}") - private String resourceIds; - - @Override - public void configure(ResourceServerSecurityConfigurer resources) throws Exception { - resources.resourceId(resourceIds).tokenServices(tokenServices); - } - - @Override - public void configure(HttpSecurity http) throws Exception { - http - .authorizeRequests() - .requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll() - .mvcMatchers("/actuator/**").permitAll() - .mvcMatchers("/api-docs/**").permitAll() - .mvcMatchers("/springjwt/**" ).authenticated() - .and().csrf(AbstractHttpConfigurer::disable); - } } \ No newline at end of file From 3be28579a1bcbada802a6a85a2fff4dac4499aa7 Mon Sep 17 00:00:00 2001 From: mrcabbage972 Date: Tue, 7 Jan 2025 21:56:53 +0000 Subject: [PATCH 3/3] wip --- pom.xml | 50 +++---------------- .../integration/config/SecurityConfig.java | 45 ++--------------- 2 files changed, 11 insertions(+), 84 deletions(-) diff --git a/pom.xml b/pom.xml index e5fb5cffb..725e027cd 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ UTF-8 UTF-8 - 18 + 21 9081 127.0.0.1 readme @@ -50,12 +50,9 @@ spring-boot-starter-validation - org.springframework.boot - spring-boot-starter-oauth2-resource-server - - - org.springframework.boot - spring-boot-starter-oauth2-client + org.springframework.security + spring-security-oauth2-authorization-server + 1.1.0 @@ -110,49 +107,14 @@ - - - io.fabric8 - docker-maven-plugin - true - 0.26.1 - - - - springboot-jwt - springboot-jwt - - @ - ${project.basedir}/src/main/docker - - artifact - - - - alias - - ${tomcat.port}:8080 - - - - http://${tomcat.ip}:${tomcat.port}/actuator/health - - - - - - - - - org.apache.maven.plugins maven-compiler-plugin 3.11.0 - 18 - 18 + 21 + 21 org.projectlombok diff --git a/src/main/java/com/nouhoun/springboot/jwt/integration/config/SecurityConfig.java b/src/main/java/com/nouhoun/springboot/jwt/integration/config/SecurityConfig.java index 40b78f030..fb8ac4605 100644 --- a/src/main/java/com/nouhoun/springboot/jwt/integration/config/SecurityConfig.java +++ b/src/main/java/com/nouhoun/springboot/jwt/integration/config/SecurityConfig.java @@ -1,9 +1,7 @@ package com.nouhoun.springboot.jwt.integration.config; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; @@ -12,10 +10,6 @@ import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.oauth2.provider.token.DefaultTokenServices; -import org.springframework.security.oauth2.provider.token.TokenStore; -import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter; -import org.springframework.security.oauth2.provider.token.store.JwtTokenStore; import org.springframework.security.web.SecurityFilterChain; /** @@ -26,17 +20,6 @@ @EnableMethodSecurity public class SecurityConfig { - @Value("${security.signing-key}") - private String signingKey; - - @Value("${security.encoding-strength}") - private Integer encodingStrength; - - @Value("${security.security-realm}") - private String securityRealm; - - - @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); @@ -48,33 +31,15 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .sessionManagement(sessionManagement -> sessionManagement .sessionCreationPolicy(SessionCreationPolicy.STATELESS) ) - .httpBasic(httpBasic -> httpBasic - .realmName(securityRealm) + .csrf(AbstractHttpConfigurer::disable) + .authorizeHttpRequests(authorize -> authorize + .anyRequest().authenticated() ) - .csrf(AbstractHttpConfigurer::disable); + .formLogin(AbstractHttpConfigurer::disable) + .oauth2ResourceServer(resourceServer -> resourceServer.jwt()); return http.build(); } - @Bean - public JwtAccessTokenConverter accessTokenConverter() { - JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); - converter.setSigningKey(signingKey); - return converter; - } - - @Bean - public TokenStore tokenStore() { - return new JwtTokenStore(accessTokenConverter()); - } - - @Bean - @Primary //Making this primary to avoid any accidental duplication with another token service instance of the same name - public DefaultTokenServices tokenServices() { - DefaultTokenServices defaultTokenServices = new DefaultTokenServices(); - defaultTokenServices.setTokenStore(tokenStore()); - defaultTokenServices.setSupportRefreshToken(true); - return defaultTokenServices; - } @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception{