Spring Level4 Spring Security 기초 적용

song yuheon·2023년 9월 4일
0

Spring

목록 보기
44/93
post-thumbnail
post-custom-banner

기초 설정


Spring Level4 Application

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
=> @SpringBootApplication


WebSecurityConfig

package com.sparta.springlevel4.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
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;

/**
 * Spring Security 설정
 * - CSRF 설정
 * - 로그인 사용
 * - resources 폴더에 있는 파일들에 대한 접근 허용
 * - 그 외 모든 요청에 대해 인증 처리
 * @Configuration: 스프링 설정 파일
 * - @Bean: 스프링이 관리하는 객체
 * - SecurityFilterChain: Spring Security 설정
 * - HttpSecurity: HTTP 요청에 대한 웹 기반 보안을 구성하는 데 사용
 * - csrf: Cross Site Request Forgery
 * - PathRequest: Spring Security에서 제공하는 정적 자원에 대한 요청을 허용하는 클래스
 * @EnableWebSecurity: Spring Security 지원을 가능하게 함
 */
@Configuration
@EnableWebSecurity // Spring Security 지원을 가능하게 함
public class WebSecurityConfig {
    /**
     * Spring Security 설정
     * @param http HttpSecurity 객체
     * @return SecurityFilterChain
     * @throws Exception
     */

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

        http.authorizeHttpRequests((authorizeHttpRequests) ->
                authorizeHttpRequests
                        .requestMatchers("/api/user/**").permitAll() // 메모 관련 API 접근 허용 설정
                        .requestMatchers(HttpMethod.GET).permitAll() // GET 메소드 요청 허용 설정
                        .anyRequest().authenticated() // 그 외 모든 요청 인증처리
        );

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

        return http.build();
    }
}

Filter ( Auto & Logging )

companent -> // companent


profile
backend_Devloper
post-custom-banner

0개의 댓글