0. 개요- 개발하다가 다시 자바에 대한 정리를 할 필요성을 느껴서 정리할 겸 글을 갱신한다.- 자바에서 상속 -> 추상 클래스 -> 인터페이스 등으로 나아가면서 궁금했던 내용들과 개념들에 대해 적어본다.1. 개념1.1 객체 지향:: 어떤 데이터와 그 데이터를 처리하는 메서드를 포함하는 객체를 사용한 프로그래밍으로 아래의 특징을 가진다.캡슐화 :: 필요한 것만 노출하여 정보 은닉을 위해상속 :: 공통된 부분 재사용, 기존의 클래스를 확장하기 위해다형성 :: 상속 구조에서 확장 가능한 코드를 작성하기 위해추상화 :: 추상화는 추상화...1.2 상속- 부모 클래스에 공통된 부분을 묶어 코드의 재사용성을 높임- 계층 구조 형성 + 오버라이딩 가능- 자식 클래스 생성 시, 부모 클래스도 생성- 상위 클래스의 하..

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..
보호되어 있는 글입니다.
- Total
- Today
- Yesterday
- Nginx
- acac
- asac7#asac
- useState
- useEffect
- asac7기
- git
- useLayoutEffect
- memo
- acas#acas7기
- useRef
- react
- ssh
- ASAC
- useContext
- useReducer
- useCallback
- useMemo
- asac#asac7기
- 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 | 31 |