[Spring] 스프링 시큐리티

이다혜·2023년 11월 16일
0

Spring

목록 보기
10/27
post-thumbnail

출처 : 점프 투 스프링부트

스프링 시큐리티란?


스프링 시큐리티는 스프링 기반 애플리케이션의 인증과 권한을 담당하는 스프링의 하위 프레임워크이다.

인증 : 해당 사용자가 본인이 맞는지를 확인하는 절차(로그인)

인가 : 인증된 사용자가 요청된 자원에 접근 가능한지를 결정하는 절차

스프링 시큐리티 설치


build.gradle 파일 수정

	implementation 'org.spring.framework.boot:spring-boot-starter-security'
	implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.1.RELEASE'

이제 서버를 재시작 하고 list 화면에 접속하면 로그인 화면이 나타난다.

스프링 시큐리티는 기본적으로 인증되지 않은 사용자에게 서비스를 제공하지 않기때문에 로그인 화면이 나타난다.

로그인 없이도 게시물 조회가 가능하도록 하기 위해 SecurityConfig.java 파일을 작성하자.

SecurityConfig.java

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests
                        .requestMatchers(new AntPathRequestMatcher("/**")).permitAll())
                .csrf((csrf) -> csrf
                        .ignoringRequestMatchers(new AntPathRequestMatcher("/h2-console/**")))
                .headers((headers) -> headers
                        .addHeaderWriter(new XFrameOptionsHeaderWriter(
                                XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)))
        ;
        return http.build();
    }
}
  • @Configuration
    : 스프링의 환결설정 파일임을 의미한다.
  • @EnableWebSecurity
    : 모든 요청 URL이 스프링 시큐리티의 제어를 받도록 만든다.
  • SecurityFilterChain 빈 생성
    : 모든 인증되지 않은 요청을 허락한다.
  • /h2-console/로 시작하는 URL은 CSRF 검증을 하지 않는다는 설정 추가

CSRF란?
cross site request forgery는 웹 사이트 취약점 공격을 방지하기 위해 사용하는 기술이다. 스프링 시큐리티가 CSRF 토큰 값을 세션을 통해 발행하고 웹 페이지에서는 폼 전송시에 해당 토큰을 함께 전송하여 실제 웹 페이지에서 작성된 데이터가 전달되는지를 검증하는 기술이다.

0개의 댓글