일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- token provider 구현
- 정보보호병 후기
- 파이브 스타즈
- 멀티 파이프 라인
- 로그스태쉬
- 데스나이트 키우기
- 토큰 만드는법
- 데스나이트 키우기 쿠폰 정리글
- Jwts 토큰 만들기
- 스프링 로그인 기능 만들기
- 코로나 19 견디기
- 양재천 오리
- 정보보호병 프로그래밍
- 정보보호병
- 양재천 장마 피해
- 파이브 스타즈 사전예약
- 양재천 사진
- jwts 토큰
- logstash 설정
- 파이브 스타즈 후기
- 파이썬
- 스프링 security
- logstash cubrid 설정
- 퇴직 라이프
- jwt 토큰 생성
- 데스나이트 키우기 매크로
- 데스나이트 키우기 매크로 소스파일
- 해군
- spring boot token provider
- 정보보호병 개발
Archives
- Today
- Total
InTen
[Spring] 스프링 Security WebSecurityConfigurerAdapter Deprecated 해결 방법 본문
군대 전역 후 스프링을 다시 하려니 스프링 Security 부터 시작해서 바뀐 부분이 너무나 많아서 Deprecated 된 클래스들이 생각보다 많아서 정리를 하려고 합니다.
기존에 코드 대로 할려고 하신 분들은 많이들 당황 하셨을 꺼라고 생각하는데요.
Rest Api 서버 토큰 생성하는 법을 바뀐 부분을 수정해서 처음부터 설명과 함께 올려드리겠습니다.
2022년부터 새로 바뀐 스프링 Security에 대한 것들을 정리 하면서 천천히 따라 오시면 될 것 같습니다.
거두 절미 하고 기존 코드와 바뀐 코드를 보여 드리겠습니다.
기존 코드
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
private final TokenProvider tokenProvider;
protected SpringSecurityConfig(TokenProvider tokenProvider) {
this.tokenProvider = tokenProvider;
}
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers(
"/v3/api-docs/**",
"/swagger-ui.html",
"/swagger/**"
);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic().disable()
.csrf().disable()
.sessionManagement()
.sessionCreationPolicy(
SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/sign-api/sign-in","/sign-api/sign-up" ).permitAll()
.antMatchers("/swagger-resources/**").permitAll()
.antMatchers("**exception**").permitAll()
.anyRequest().hasRole("USER")
.and()
.exceptionHandling().accessDeniedHandler(new CustomAccessDeniedHandler())
.and()
.exceptionHandling().authenticationEntryPoint(new CustomAuthenticationEntryPoint())
.and()
.addFilterBefore(new JwtAuthenticationFilter(tokenProvider), UsernamePasswordAuthenticationFilter.class);
}
}
바뀐 후 코드는 아래 링크의 스프링 블로그에 기술되어 있는 방식으로 변경
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig {
private final TokenProvider tokenProvider;
protected SpringSecurityConfig(TokenProvider tokenProvider) {
this.tokenProvider = tokenProvider;
}
@Bean
public WebSecurityCustomizer configure() {
return (web) -> web.ignoring().mvcMatchers(
"/v3/api-docs/**",
"/swagger-ui.html",
"/swagger/**"
);
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.httpBasic().disable()
.csrf().disable()
.sessionManagement()
.sessionCreationPolicy(
SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/sign-api/sign-in","/sign-api/sign-up" ).permitAll()
.antMatchers("/swagger-resources/**").permitAll()
.antMatchers("**exception**").permitAll()
.anyRequest().hasRole("USER")
.and()
.exceptionHandling().accessDeniedHandler(new CustomAccessDeniedHandler())
.and()
.exceptionHandling().authenticationEntryPoint(new CustomAuthenticationEntryPoint())
.and()
.addFilterBefore(new JwtAuthenticationFilter(tokenProvider), UsernamePasswordAuthenticationFilter.class);
return http.build();
}
}
WebSecurityConfigurerAdapter 를 Deprecated 한 이유는 Component-base 로 시큐리티를 구성하고 싶었다는게 이유 라고 합니다. 그래서 의존성을 지우고 Bean으로 등록해서 사용하라고 합니다.
다음 단계로는 토큰 Provider를 만들어 보겠습니다.
다음 클래스에서 Deprecated 된 메소드는 Jwts에 parser()와 signWith() 이 두개에 대해서 이야기 해보겠습니다.
다들 좋은 하루 되시길 바라겠습니다.
'프로그래밍 > 자바' 카테고리의 다른 글
[Spring] 스프링 Security Token Provider 만드는 법 (0) | 2022.11.23 |
---|
Comments