Backend/SpringBoot
Spring Security (Configuration, EnableWebSecurity 어노테이션)
Dean83
2024. 10. 25. 13:49
- 인증 (Auth) 기능 및 보안기능을 사용하기 위한 프레임 워크이다.
- 간략 요약
- build.gradle 에서 프레임워크 추가
- @Configuration, @EnableWebSecurity 어노테이션을 사용하는 config용 클래스 생성
- 클래스에서 각종 시큐리티 관련 세팅 진행
- 설치 (build.gradle)
implementation 'org.springframework.boot:spring-boot-starter-security'
- @Configuration 어노테이션
- 스프링 환경설정임을 알리는 어노테이션
- Security 관련 환경설정 뿐 아니라 AWS 연동, 구글 API 연동등의 환경설정도 할 수 있다.
- @EnableWebSecurity
- 모든 API 통신에 스프링 시큐리티를 활성화 함
- SecurityFilterChain 클래스를 리턴하는 함수 작성 하고, 설정을 추가함
- csrf, request 퍼미션, jwt, cors 등등
-
WebSecurityConfigurerAdapter 는 더이상 지원되지 않아, SecurityFilterChain 클래스를 리턴하는 함수 작성 필요.
package com.example.test1.test1;
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.web.SecurityFilterChain;
import org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@Configuration
@EnableWebSecurity
public class security {
@Bean
SecurityFilterChain securitySetting(HttpSecurity sec) throws Exception
{
//h2 콘솔을 위한 설정으로, csrf 예외처리 url 설정
//requestMatchers 는 request 요청에 대해 권한부여
//headers 는 h2 콘솔의 xframe 허용 (같은 사이트 내 허용) - xframe은 클릭 DDos 방지용
sec.csrf(csrf -> csrf.ignoringRequestMatchers("/console/**"))
.authorizeHttpRequests(httpreq -> httpreq.requestMatchers(new AntPathRequestMatcher("/**")).permitAll())
.headers(headers -> headers.addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)))
.cors(corsCustomizer -> corsCustomizer.configure(sec));
......필요시 추가 작성
return sec.build();
}
}
- 설정은 워낙 많고 복잡해서 필요시 마다 구글검색 하는게 좋을듯 하다.
- JWT 세팅이 꽤 복잡하다.