JAVA 17 / SpringBoot 3.21 / SpringSecurity 6.21 / API형태로 개발하였습니다.
스프링 시큐리티가 어플리케이션에 적용되었으니
우리 입맛에 맞게 설정을 변경해줘야 합니다.
1. SecurityConfig 생성
- 프로젝트 경로에 config 패키지를 하나 만들고 SecurityConfig클래스를 생성했습니다.
2. SecurityConfig 기본 설정
- 시큐리티 설정 파일입니다. 가장 먼저 0@EnableWebSecurity 어노테이션을 달아줍니다.
이렇게 하면 어플리케이션에 요청되는 모든 URL이 스프링 시큐리티의 필터 체인을 거치게 됩니다.
@Configuration //컴포넌트 스캔에 적용되도록 어노테이션을 달아줍니다.
@EnableWebSecurity //모든 요청 URL이 스프링 시큐리티의 필터체인을 거치도록 하는 어노테이션입니다.
public class SecurityConfig {
@Bean
//스프링 시큐리티 기본 설정
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http .csrf(AbstractHttpConfigurer::disable) //csrf 비활성)
.httpBasic(HttpBasicConfigurer::disable) //http basic Auth 기반 인증 비활성
.sessionManagement((sessionManagement) -> sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // 세션 미사용
.authorizeHttpRequests(authorize -> authorize //모든 http 요청에 대한 인증 요구
.anyRequest().authenticated());
return http.build();
}
1)RestAPI방식으로 개발할거라 csrf와 httpBasic을 disable처리했습니다.
2)또한 jwt를 이용한 인증방식을 사용할거라 세션이 필요 없어 세션의 상태를 STATELSS로 설정하였습니다.
3)현재 모든 http 요청에 대해 인증을 요구하도록 설정하였습니다.
3. 필터체인 무시
현재 모든 http 요청에 대해 인증을 요구하도록 설정하였습니다.
이렇게하면 인증을 얻는 로그인/토큰 요청 URL에 요청에도 인증이 필요해 접근 자체가 불가능합니다.
그렇기 때문에 필터체인을 거치지 않는
URL 목록을 별도로 설정해줍니다.
//필터체인을 거치지 않을 URL
private static final String[] IGNORE_FILTER_URLS = {
"/api/token/refresh" // 토근 재발행
, "/api/user/sign" // 회원 가입
};
//필터체인을 무시하도록 설정
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return web -> web.ignoring()
.requestMatchers(IGNORE_FILTER_URLS);
}
'스프링시큐리티' 카테고리의 다른 글
[스프링시큐리티 맨땅부터 적용하기] 1. 프로젝트 생성 및 gradle 설정 (1) | 2024.01.03 |
---|---|
[스프링시큐리티] 커스텀 Login 화면과 csrf (0) | 2023.07.26 |
[스프링시큐리티] 권한(Authority) & 역할(Role)에 따른 페이지 인가 (0) | 2023.07.23 |
[스프링 시큐리티] 스프링시큐리티 -2(로그인 로직 처리) (0) | 2023.07.21 |
[스프링 시큐리티] 스프링시큐리티 -1(시큐리티 인가 및 인증) (0) | 2023.07.21 |