240610
오늘의 학습
● 1. 시큐리티
Spring Security 프레임워크
스프링 서버에서 필요한 인증 및 인가를 위해 많은 기능을 제공을 해줌으로써 개발자의 수고를 덜어준다.
( 마치 스프링 프레임워크가 웹 서버에 편의를 제공해주는 느낌 )
스프링 시큐리티는 필터 기반으로 동작을 한다.
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();
}
}
스프링 시큐리티
인증과 접근 제어를 위해 세부적인 맞춤 구성이 가능한 강력한 프레임워크
스프링 애플리케이션에 보안을 적용하는 과정을 크게 간소화하는 프레임워크
우리의 애플리케이션도 이처럼 복잡도를 높일수록 비용도 증가한다.
애플리케이션에서 비용이란 "보안이 유지 보수와 성능에 미치는 영향"을 의미한다.
애플레케이션에서 비용이란 유지보수에 들어가는 시간을 의미한다.
AuthenticationProvider
UserDetailsService를 통해 조회해 온 유저 정보를 내부의 인증 로직을 통해 인증을 한다.
해당 인증된 결과를 필터에 반환한다. 해당 결과는 Authentication 객체로 반환이 되며 SecurityContext에 저장이 된다.
Controller에서 SecurityContext의 인증 정보를 이용할 수 있으며 자세하게는 SecurityContext에 저장이 되어있어 Authentication 객체를 이용하는 것이다.
1. 웹에서 요청이 들어오면 ServletContainer(tomcat)이 요청을 받아주고 요청에 대한 하나의 스레드를 생성을 해준다.
2. 스레드 생성 후 HttpServletRequest 객체를 생성 각 요청에 대한 정보들을 담아주게 된다.
3. 이때, HttpServletResponse 객체 또한 생성이 되어서 같이 보내주게 된다.
3. 그 후 필터체인이 요청을 가로채 제일 먼저 수행이 된다.
4. DispathcerServlet(싱글톤)를 통해 요청을 처리해주고 HttpServletResponse 객체에 Http응답에 대한 정보를 넣어 요청에 대한 응답을 줄 수 있다.
출처: https://bin2dev.tistory.com/76 [sangnamja:티스토리]
# 오늘의 회고
#
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 39일차 TIL - 소셜 로그인 API(OAuth) (0) | 2024.06.12 |
---|---|
내일배움캠프 38일차 TIL - 뉴스피드 프로젝트 (0) | 2024.06.12 |
내일배움캠프 36일차 TIL - 스프링 빈 라이프사이클 (0) | 2024.06.07 |
내일배움캠프 35일차 TIL - Enum (0) | 2024.06.05 |
내일배움캠프 34일차( [13일의 금요일] 뉴스피드 프로젝트 ) (2) | 2024.06.04 |