
1. 기본 흐름1.1 기본 로직JSON형식의 POST 요청을 받아서 로그인 로직을 진행할 것이므로,SpringSecurity 내의 LoginFrom이 아닌 다른 흐름을 가져야 한다.2. 커스텀한 흐름2.1 기본 로직하지만 Custom해서 작성한 경우에는 SecurityFilterChain에서 - UsernamePasswordAuthenticationFilter를 상속 받아서 인증 토큰을 반환하는- CustomUsernamePasswordAuthenticationFilter를 만들어서 - addFilterAt를 통해 필터링의 방향성을 틀어주어야 한다. 이때, 중요한 점은 기본 설정된 AuthenticationManager를 사용한다면 - 우리가 설정한 CustomUserDetailsService가 아닌 U..

0. 기본 설정0.1 기본 설정 값- 이것저것 붙여보기에 앞서서 기본 설정에 대해서 말해볼까 한다.- 기본적으로 최신의 기능들을 사용하면서 적용할거라 springboot는 3.5.0에 java는 21을 사용했다.- application.properties는 아래와 같이 설정했고더보기// src/main/resources/application.propertiesspring.application.name=SecurityExserver.port=8080# SQL 연결 설정spring.datasource.url=${SPRING_DATASOURCE_URL}spring.datasource.username=${SPRING_DATASOURCE_USERNAME}spring.datasource.password=${SPRI..
1. HTTP Basic 인증http.httpBasic(Customizer.withDefaults());클라이언트에서 Header를 통해 Authorization: Basic base64(id:pw) 형태로 요청BasicAuthenticationFilter 필터가 SecurityFilterChain에 추가되어 (Basic Authentication 활성화)Basic Authentication 인증 방식- Authorization 헤더에 username:password ID/PW 인증 정보를 Base64 인코딩 후 전송- Authorization 헤더 형태 :: Authorization: Basic {base64(usename:password)}1.1 처리 흐름1. BasicAuthenticationFil..
1. WebSecurityCustomizer:: Spring Security 내 모든 보안 설정에 대한 예외 설정:: Spring Security는 정적 리소스나 헬스체크 같은 요청은 필터 체인을 아예 사용 X 가능1.1 WebSecurityCustomizer 설정 비교1. 필터 사용 X@Beanpublic WebSecurityCustomizer webSecurityCustomizer() { return (web) -> web.ignoring() .requestMatchers("/health", "/health/**", "/publics/**");}web.ignoring(): 필터 자체를 타지 않음 (SecurityFilterChain 적용하지 않을 예외 URL 규칙 설정)authori..

1. sessionManagement():: 인증 완료 시, 세션관리에 대한 내용 :: 세션 수 제한 및 세션 고정 공격 방어http.sessionManagement(session -> session .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED) // “Spring Security 로직에서” HttpSession 생성하여 사용할지 여부 .sessionFixation(sessionFixation -> sessionFixation.changeSessionId()) // Session Fixation 세션 고정 공격 방어를 위한 ID 변경 // .sessionCreationPolicy(SessionCreationPolicy.STATEL..

1. csrf()1.1 정의CSRF(Cross-Site Request Forgery) :: 인증된 사용자의 권한을 악용한 요청 위조 공격 :: 악의적인 웹사이트가 사용자를 속여, 사용자가 로그인한 상태에서 웹사이트에 의도하지 않은 요청을 보내는 공격:: CSRF 방지를 위한 CSRF Token 통한 방어책 제공( POST, PUT, DELETE 등 상태 변경 요청에 대해 CSRF 토큰이 필요) // CORS가 방지하지 못하는 FORM 및 IMG 태그를 통한 CSRF 공격의 예// CSRF에 대해 CORS로 일부는 방지할 수 있지만 네이티브 앱과 FORM 통한 공격은 토큰으로만 방어가능// 1) 이미지 태그를 이용한 GET 방식 CSRF 예시// 2) 폼 자동 제출을 이용한 POST 방식 CSRF 예시 ..
0. SecurityConfig 클래스- Spring Security 5.7 :: 메서드를 통해 파라미터 주입받아 세부설정- Spring Security 5.8+ :: 직접 세부설정한 객체를 @Bean 으로 반환@Configuration@EnableWebSecuritypublic class SecurityConfig { // Spring Security 설정은 보통 하나의 설정 클래스로 구성 @Bean public AuthenticationManager authenticationManager() { ... } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { ... } @B..
1. HttpSession은 어디에서 만들어지고, 어떻게 동작할까 1.1 HttpSession의 생성 주체Servlet Container (Springboot의 경우 Tomcat)가-> 모든 HTTP 요청과 응답을 HttpServletRequest, HttpServletResponse 객체로 래핑하고,-> HttpSession도 직접 생성세션은 필요할 때 생성되는 Lazy 방식 1) request.getSession() 명시적으로 호출될 때2) Spring 또는 개발자가 세션에 접근하려 할 때 (@Autowired 등으로 주입 요청 시)1.2 HttpSession가 Controller에서 사용 가능한 이유- 문제 :: Spring MVC에서 @Controller는 기본적으로 Singleton Scop..
보호되어 있는 글입니다.

0. Spring Security:: Spring 기반 웹 어플리케이션에서 보안을 담당하는 프레임 워크인증(로그인) / 인가(권한 제어)를 중심으로 작동CSRF, CORS, 세션 제어, 비밀번호 암호화 등의 다양한 보안 기능 제공직접 비즈니스 로직을 짜지 않아도 인증 / 인가에 대한 보안 기본 구조 제공0.1 목적:: Spring Security가 없다면? → 로그인 처리, 세션 유지, 권한 확인을 직접 구현 (매우 번거롭고 보안상 위험 가능성↑) Authentication(인증) – "누구인가?":: 사용자가 자신임을 증명 (ID/PW, SSO, MFA 등)Authorization(인가) – "무엇을 할 수 있는가?":: 해당 사용자가 요청한 리소스를 접근할 권한이 있는지 판단 (ROLE_USER, R..
- Total
- Today
- Yesterday
- ssh
- asac7
- useLayoutEffect
- memo
- Nginx
- git
- useMemo
- acas#acas7기
- useCallback
- useContext
- useEffect
- useState
- react
- useReducer
- asac7#asac
- asac7기
- acac
- useRef
- ASAC
- asac#asac7기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |