update WebSecurityConfig for new Spring Boot version
This commit is contained in:
parent
e037bf6824
commit
edaf3082e0
43
README.md
43
README.md
@ -21,6 +21,27 @@ For more detail, please visit:
|
|||||||
|
|
||||||
For instruction: [Spring Boot Refresh Token with JWT example](https://bezkoder.com/spring-boot-refresh-token-jwt/)
|
For instruction: [Spring Boot Refresh Token with JWT example](https://bezkoder.com/spring-boot-refresh-token-jwt/)
|
||||||
|
|
||||||
|
## More Practice:
|
||||||
|
> [Spring Boot File upload example with Multipart File](https://bezkoder.com/spring-boot-file-upload/)
|
||||||
|
|
||||||
|
> [Exception handling: @RestControllerAdvice example in Spring Boot](https://bezkoder.com/spring-boot-restcontrolleradvice/)
|
||||||
|
|
||||||
|
> [Spring Boot Repository Unit Test with @DataJpaTest](https://bezkoder.com/spring-boot-unit-test-jpa-repo-datajpatest/)
|
||||||
|
|
||||||
|
> [Spring Boot Pagination & Sorting example](https://www.bezkoder.com/spring-boot-pagination-sorting-example/)
|
||||||
|
|
||||||
|
Associations:
|
||||||
|
> [Spring Boot One To Many example with Spring JPA, Hibernate](https://www.bezkoder.com/jpa-one-to-many/)
|
||||||
|
|
||||||
|
> [Spring Boot Many To Many example with Spring JPA, Hibernate](https://www.bezkoder.com/jpa-many-to-many/)
|
||||||
|
|
||||||
|
> [JPA One To One example with Spring Boot](https://www.bezkoder.com/jpa-one-to-one/)
|
||||||
|
|
||||||
|
Deployment:
|
||||||
|
> [Deploy Spring Boot App on AWS – Elastic Beanstalk](https://www.bezkoder.com/deploy-spring-boot-aws-eb/)
|
||||||
|
|
||||||
|
> [Docker Compose Spring Boot and MySQL example](https://www.bezkoder.com/docker-compose-spring-boot-mysql/)
|
||||||
|
|
||||||
## Fullstack Authentication
|
## Fullstack Authentication
|
||||||
|
|
||||||
> [Spring Boot + Vue.js JWT Authentication](https://bezkoder.com/spring-boot-vue-js-authentication-jwt-spring-security/)
|
> [Spring Boot + Vue.js JWT Authentication](https://bezkoder.com/spring-boot-vue-js-authentication-jwt-spring-security/)
|
||||||
@ -33,6 +54,10 @@ For instruction: [Spring Boot Refresh Token with JWT example](https://bezkoder.c
|
|||||||
|
|
||||||
> [Spring Boot + Angular 12 JWT Authentication](https://www.bezkoder.com/angular-12-spring-boot-jwt-auth/)
|
> [Spring Boot + Angular 12 JWT Authentication](https://www.bezkoder.com/angular-12-spring-boot-jwt-auth/)
|
||||||
|
|
||||||
|
> [Spring Boot + Angular 13 JWT Authentication](https://www.bezkoder.com/angular-13-spring-boot-jwt-auth/)
|
||||||
|
|
||||||
|
> [Spring Boot + Angular 14 JWT Authentication](https://www.bezkoder.com/angular-14-spring-boot-jwt-auth/)
|
||||||
|
|
||||||
> [Spring Boot + React JWT Authentication](https://bezkoder.com/spring-boot-react-jwt-auth/)
|
> [Spring Boot + React JWT Authentication](https://bezkoder.com/spring-boot-react-jwt-auth/)
|
||||||
|
|
||||||
## Fullstack CRUD App
|
## Fullstack CRUD App
|
||||||
@ -69,6 +94,12 @@ For instruction: [Spring Boot Refresh Token with JWT example](https://bezkoder.c
|
|||||||
|
|
||||||
> [Angular 13 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-angular-13-postgresql/)
|
> [Angular 13 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-angular-13-postgresql/)
|
||||||
|
|
||||||
|
> [Angular 14 + Spring Boot + H2 Embedded Database example](https://www.bezkoder.com/spring-boot-angular-14-crud/)
|
||||||
|
|
||||||
|
> [Angular 14 + Spring Boot + MySQL example](https://www.bezkoder.com/spring-boot-angular-14-mysql/)
|
||||||
|
|
||||||
|
> [Angular 14 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-angular-14-postgresql/)
|
||||||
|
|
||||||
> [React + Spring Boot + MySQL example](https://bezkoder.com/react-spring-boot-crud/)
|
> [React + Spring Boot + MySQL example](https://bezkoder.com/react-spring-boot-crud/)
|
||||||
|
|
||||||
> [React + Spring Boot + PostgreSQL example](https://bezkoder.com/spring-boot-react-postgresql/)
|
> [React + Spring Boot + PostgreSQL example](https://bezkoder.com/spring-boot-react-postgresql/)
|
||||||
@ -82,18 +113,6 @@ Run both Back-end & Front-end in one place:
|
|||||||
|
|
||||||
> [Integrate Vue.js with Spring Boot Rest API](https://bezkoder.com/integrate-vue-spring-boot/)
|
> [Integrate Vue.js with Spring Boot Rest API](https://bezkoder.com/integrate-vue-spring-boot/)
|
||||||
|
|
||||||
More Practice:
|
|
||||||
> [Spring Boot File upload example with Multipart File](https://bezkoder.com/spring-boot-file-upload/)
|
|
||||||
|
|
||||||
> [Exception handling: @RestControllerAdvice example in Spring Boot](https://bezkoder.com/spring-boot-restcontrolleradvice/)
|
|
||||||
|
|
||||||
> [Spring Boot Repository Unit Test with @DataJpaTest](https://bezkoder.com/spring-boot-unit-test-jpa-repo-datajpatest/)
|
|
||||||
|
|
||||||
Deployment:
|
|
||||||
> [Deploy Spring Boot App on AWS – Elastic Beanstalk](https://www.bezkoder.com/deploy-spring-boot-aws-eb/)
|
|
||||||
|
|
||||||
> [Docker Compose Spring Boot and MySQL example](https://www.bezkoder.com/docker-compose-spring-boot-mysql/)
|
|
||||||
|
|
||||||
## Dependency
|
## Dependency
|
||||||
– If you want to use PostgreSQL:
|
– If you want to use PostgreSQL:
|
||||||
```xml
|
```xml
|
||||||
|
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>2.6.1</version>
|
<version>2.7.3</version>
|
||||||
<relativePath /> <!-- lookup parent from repository -->
|
<relativePath /> <!-- lookup parent from repository -->
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>com.bezkoder</groupId>
|
<groupId>com.bezkoder</groupId>
|
||||||
|
@ -4,14 +4,17 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
|
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
|
||||||
|
//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
|
||||||
|
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
|
||||||
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
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.EnableWebSecurity;
|
||||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||||
import org.springframework.security.config.http.SessionCreationPolicy;
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||||
|
|
||||||
import com.bezkoder.springjwt.security.jwt.AuthEntryPointJwt;
|
import com.bezkoder.springjwt.security.jwt.AuthEntryPointJwt;
|
||||||
@ -19,12 +22,11 @@ import com.bezkoder.springjwt.security.jwt.AuthTokenFilter;
|
|||||||
import com.bezkoder.springjwt.security.services.UserDetailsServiceImpl;
|
import com.bezkoder.springjwt.security.services.UserDetailsServiceImpl;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableWebSecurity
|
|
||||||
@EnableGlobalMethodSecurity(
|
@EnableGlobalMethodSecurity(
|
||||||
// securedEnabled = true,
|
// securedEnabled = true,
|
||||||
// jsr250Enabled = true,
|
// jsr250Enabled = true,
|
||||||
prePostEnabled = true)
|
prePostEnabled = true)
|
||||||
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
public class WebSecurityConfig { // extends WebSecurityConfigurerAdapter {
|
||||||
@Autowired
|
@Autowired
|
||||||
UserDetailsServiceImpl userDetailsService;
|
UserDetailsServiceImpl userDetailsService;
|
||||||
|
|
||||||
@ -36,15 +38,30 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
|||||||
return new AuthTokenFilter();
|
return new AuthTokenFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
|
// public void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
|
||||||
authenticationManagerBuilder.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
|
// authenticationManagerBuilder.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public DaoAuthenticationProvider authenticationProvider() {
|
||||||
|
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
|
||||||
|
|
||||||
|
authProvider.setUserDetailsService(userDetailsService);
|
||||||
|
authProvider.setPasswordEncoder(passwordEncoder());
|
||||||
|
|
||||||
|
return authProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Bean
|
||||||
|
// @Override
|
||||||
|
// public AuthenticationManager authenticationManagerBean() throws Exception {
|
||||||
|
// return super.authenticationManagerBean();
|
||||||
|
// }
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@Override
|
public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
|
||||||
public AuthenticationManager authenticationManagerBean() throws Exception {
|
return authConfig.getAuthenticationManager();
|
||||||
return super.authenticationManagerBean();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ -52,15 +69,31 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
|||||||
return new BCryptPasswordEncoder();
|
return new BCryptPasswordEncoder();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
protected void configure(HttpSecurity http) throws Exception {
|
// protected void configure(HttpSecurity http) throws Exception {
|
||||||
|
// http.cors().and().csrf().disable()
|
||||||
|
// .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
|
||||||
|
// .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
|
||||||
|
// .authorizeRequests().antMatchers("/api/auth/**").permitAll()
|
||||||
|
// .antMatchers("/api/test/**").permitAll()
|
||||||
|
// .anyRequest().authenticated();
|
||||||
|
//
|
||||||
|
// http.addFilterBefore(authenticationJwtTokenFilter(), UsernamePasswordAuthenticationFilter.class);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
|
||||||
http.cors().and().csrf().disable()
|
http.cors().and().csrf().disable()
|
||||||
.exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
|
.exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
|
||||||
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
|
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
|
||||||
.authorizeRequests().antMatchers("/api/auth/**").permitAll()
|
.authorizeRequests().antMatchers("/api/auth/**").permitAll()
|
||||||
.antMatchers("/api/test/**").permitAll()
|
.antMatchers("/api/test/**").permitAll()
|
||||||
.anyRequest().authenticated();
|
.anyRequest().authenticated();
|
||||||
|
|
||||||
|
http.authenticationProvider(authenticationProvider());
|
||||||
|
|
||||||
http.addFilterBefore(authenticationJwtTokenFilter(), UsernamePasswordAuthenticationFilter.class);
|
http.addFilterBefore(authenticationJwtTokenFilter(), UsernamePasswordAuthenticationFilter.class);
|
||||||
|
|
||||||
|
return http.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user