Everyday Dev System

Spring Secutiry 본문

내배캠 주요 학습/Spring 숙련

Spring Secutiry

chaeyoung- 2023. 6. 20. 01:33
Spring Security가 Filter 기반으로 동작을 함.
Security가 Session 방식으로 동작을 하는 것을 알아야 함.
그러므로 이전 강의에 만들어놓은 Filter 클래스의 @Component 코드 주석 처리

 

Filter 관련 참조 글 :

2023.06.20 - [분류 전체보기] - Filter

 

 

 

전체 코드 :

package com.sparta.springauth.config;

import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity // Spring Security 지원을 가능하게 함
public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        // CSRF 설정
        http.csrf((csrf) -> csrf.disable());

        http.authorizeHttpRequests((authorizeHttpRequests) ->
                authorizeHttpRequests
                        .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() // resources 접근 허용 설정
                        .anyRequest().authenticated() // 그 외 모든 요청 인증처리
        );

        // 로그인 사용
        http.formLogin(Customizer.withDefaults());

        return http.build();
    }
}

 

 

 

 

 

코드 분석:

 

@Configuration
@EnableWebSecurity // Spring Security 지원을 가능하게 함
public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { }
    
}

@EnableWebSecurity

해당 어노테이션을 기재해야 Spring Security 활용 가능.

 

@Configuration

클래스 내에 메서드를 Bean으로 수동 등록할 때 활용.

메서드에 @Bean 어노테이션을 기재해서 해당 메서드를 Bean으로 수동 등록함.

해당 메서드에서 반환하여 반환된 객체가 Bean으로 등록이 된다.

위와 같은 예시는 SecurityFilterChain 타입의 Bean이 등록된다.

 

 

 

http.authorizeHttpRequests((authorizeHttpRequests) ->
        authorizeHttpRequests
        .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() 
        // resources 접근 허용 설정
        .requestMatchers("/api/user/**").permitAll()
        .anyRequest().authenticated() // 그 외 모든 요청 인증처리
);

.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()

[resources]로 들어오는 접근들에 대해서 permitAll한다. 허가하므로 인증 처리를 진행하지 않는다.

 

.requestMatchers("/api/user/**").permitAll()

/api/user/로 시작하는 어떤 요청들 모두 인증처리를 하지 않겠다.

 

.anyRequest().authenticated() 

그외 모든 요청은 인증 처리를 한다.

 

 

 

'내배캠 주요 학습 > Spring 숙련' 카테고리의 다른 글

Validation, 회원가입 데이터에 적용하기  (0) 2023.06.20
중요한 Validation, 예외처리  (0) 2023.06.20
Spring 에서 Filter란?  (0) 2023.06.20
로그인 구현하기  (0) 2023.06.19
회원가입 구현하기  (0) 2023.06.19