SecurityConfig 클래스 설명
스프링 시큐리티의 인가 및 설정을 담당하는 클래스이다. Security Config 구현은 스프링 시큐리티의 세부 버전별로 많이 상이하다. (지금은 스프링 시큐리티 6.2.1 버전으로 구현)
- 스프링 시큐리티 시리즈 : 버전별 Security Config 구현 방법
https://www.youtube.com/watch?v=NdRVhOccuOs
Security Config 클래스 기본 요소 작성
시큐리티 JWT 구현을 위한 Config 클래스의 일부분 작성.
먼저 기본적인 설정만 진행하고 프로젝트를 진행하면서 커스텀 필터 요소들을 추가 구현 예정.
- SecurityConfig
package com.example.springjwt.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
//csrf disable
http
.csrf((auth) -> auth.disable());
//From 로그인 방식 disable
http
.formLogin((auth) -> auth.disable());
//http basic 인증 방식 disable
http
.httpBasic((auth) -> auth.disable());
// 경로별 인가 작업
http
.authorizeHttpRequests((auth) -> auth
.requestMatchers("/login", "/", "/join").permitAll()
.requestMatchers("/admin").hasRole("ADMIN")
.anyRequest().authenticated());
// 세션 설정
http
.sessionManagement((session) -> session
.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
return http.build();
}
}
JWT를 통한 인증/인가를 위해서 세션을 STATELESS 상태로 설정하는 것이 중요하다.
BCryptPasswordEncoder 등록
- SecurityConfig
package com.example.springjwt.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
//csrf disable
http
.csrf((auth) -> auth.disable());
//From 로그인 방식 disable
http
.formLogin((auth) -> auth.disable());
//http basic 인증 방식 disable
http
.httpBasic((auth) -> auth.disable());
// 경로별 인가 작업
http
.authorizeHttpRequests((auth) -> auth
.requestMatchers("/login", "/", "/join").permitAll()
.requestMatchers("/admin").hasRole("ADMIN")
.anyRequest().authenticated());
// 세션 설정
http
.sessionManagement((session) -> session
.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
return http.build();
}
}
'Spring > Spring Security - JWT' 카테고리의 다른 글
Spring Security JWT 7 : 로그인 필터 구현 (0) | 2024.12.21 |
---|---|
Spring Security JWT 5 : DB 연결 및 Entity 작성 (0) | 2024.12.20 |
Spring Security JWT 4 : POSTMAN 설치 (0) | 2024.12.20 |
Spring Security JWT 2 : 프로젝트 생성 및 의존성 추가 (0) | 2024.12.20 |
Spring Security JWT 1 : 목표 및 동작 원리 (0) | 2024.12.20 |