일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kruskal
- 멀티프로세서
- MSA
- 자료구조
- 최대 힙
- 점근적 표기법
- posix
- python
- JPA
- heapq
- 힙트리
- 최소힙
- 프로세스
- 스케줄링
- spring
- jpa n+1 문제
- 알고리즘
- JVM
- 백준장학금
- 완전이진트리
- AVL트리
- SpringSecurity
- HTTP
- 이분탐색이란
- 연결리스트 종류
- 운영체제
- 백준 장학금
- 연결리스트
- 강화학습
- 엔티티 그래프
- Today
- Total
목록SpringSecurity (4)
KKanging

UsernamePasswordAuthenticationFilter란우리가 로그인을 시도할 때 Security에서 기본적으로 동작하는 Filter이다.Security에서 디폴트로 제공하고 만약 SecurityFilterChain을 커스텀한다면 제공해주지 않는다.즉, 우리가 주로 커스텀 해야하는 Filter라는 뜻이다.AuthenticationFilter 구조AuthenticationFilter의 기본 호출 구조이다.호출 순서는 다음과 같다AuthenticationFilter호출UsernamePasswordAuthenticationToken (비인증) 생성AuthenticationManager.authenticate(token) 호출구현체인 ProviderManager 호출ProviderManager 는 A..

CorsFilterCorsFilter는 서버의 Cors 공격을 막기 위한 Fitler이다. 같은 Origin 이 아닌 출처에 대한 요청을 막기위함이다.Cross-Origin이란?위와 같이 프로토콜 + hostname + port 중에 하나라도 다르면 Cross Origin 모두 같으면 동일한 Origin이라고 칭한다.옛날에는 서버 와 프론트 서버가 동일한 서버에 있는 경우가 많았으므로 위와 동일한 Origin 에 대한 요청만 허용하도록 해서 보안을 강화하였다.하지만 요즘에는 API 서버로 많이 사용하기 때문에 프론트 서버와 백엔드 서버가 다른 경우가 많다. 이런 경우에는 대부분 백엔드 서버에서 특정 Origin을 명시적으로 허용해줘야 한다.즉Origin : protocal + hostname + port..

SecurityContextFilter의 역할SecurityContextFilter은 세션 기반의 서버를 구현했을 때 사용자가 인증을 기반을 하는 요청을 보낼 때 세션 id에 해당하는 SecurityContext 를 가져오고 ContextHolder에 Load한다. 코드 뜯어보기SecurityContextHolderFilterGenericFilterBean을 상속 받고SecurityContetRepository 와 SecurityContextHolderStrategy 를 참조 한다.request에 이 FILTER를 거쳤다는 확인을 위해 값을 저장한다.securityContextRepository로 사용자가 보낸 세션 id에 해당하는 객체를 세션 DB에서 조회후 가져온다. Supplier은 지연된 로딩을 ..

Security에서 상태를 저장해야하는 이유SpringSecurity에서 구현된 핵심 로직은 SecurityFilterChain 의 Filter들을 거치면서 수행된다.현재 요청을 보낸 상태를 저장해야 다음 Filter들이 요청의 상태를 확인하여 로직을 수행한다.SecurityContextHolderSecurityContextHolder가 현재 요청을 보낸 사용자들의 상태를 관리한다. 그리고 SecurityContext에 해당하는 정보인 Authentication 객체를 담는다.Authentication 객체는 SecurityContext에 포함되어 관리되며 SecurityContext는 0개 이상 존재할 수 있다.그리고 이 N개의 SecurityContext는 하나의 SecurityContextHolde..