| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- c
- transform
- 소수
- React 성능 최적화
- spring
- Codility
- skt membership
- Photoshop
- 반응형 웹
- pandas
- useMemo
- box-sizing
- 포토샵
- c++
- 강화학습
- 알고리즘
- JSX
- REM
- Nginx
- SK바이오사이언스
- React.memo
- useCallback
- 통신사할인
- react
- grid
- 미디어 쿼리
- Reverse Proxy
- CSS
- 백준
- 수학
- Today
- Total
목록Backend/Spring Security (17)
sliver__
NGINX 스케일링 방법 총정리: 수평 확장, DNS, VIP(keepalived), L4/L7 관점까지 트래픽이 급증하면 단일 NGINX 박스가 버티지 못할 때가 있습니다. 이 글에서는 왜 과부하가 발생하는지를 먼저 이해하고, NGINX를 수평 확장하는 대표 전략(다중 인스턴스, DNS 기반, 가상 IP 기반)을 쉬운 언어로 정리합니다. 1) 먼저 병목을 이해하기: NGINX는 어디서 힘들어질까? 연결 수 증가: 클라이언트마다 TCP 연결 상태를 보관합니다. 연결이 많아질수록 메모리 사용량이 커집니다. 요청 파싱 비용(L7): HTTP 요청라인/헤더/바디를 파싱하는 작업은 CPU를 사용합니다. TLS 오버헤드: 핸드셰이크, 대칭키 암‧복호화 유지, 세션 유지..
AuthenticationProviderAuthenticationProvider는 interface로 사용자가 상황에 맞는 인증방식을 구현하기 위해 구현한다.두 가지 함수가 정의되어있는데authenticatesupports이다. 유저가 name, password를 입력하여 전달하면 AuthenticationProvider를 상속받아 구현하는 class의 support 함수를 호출한다.support 함수는 Authentication interface class중 어떤 하위 구현 클래스를 사용하는지 확인하는 클래스이다. 현재 프로젝트에는 UsernamePasswordAuthenticationToken을 사용하고 있다. 이 후, authenticate 함수가 동작하게 된다.authenticate 함수 내부에는..
User ManagementSpring security에서의 User management는 여러 단계로 나뉘어져 있다.UserDetailsService, UserDetailsManager 등으로 구성되어 있다. 가장 먼저 인터페이스부터 살펴보면 UserDetailsService, UserDetailsManager 두 가지가 있다UserDetailsService는 유저의 정보를 DB 또는 Memory에서 load하는 함수가 정의되어 있다.UserDetailsManager는 유저 정보의 CRUD를 담당하고 있다. 왜 이렇게 나뉘어져 있는 걸까?그 이유는 spring security를 사용자는 각 인터페이스를 자신의 상황에 맞게 구현할 수 있도록 하기 위해서이다. 그리고 UserDetails도 interfac..
UserDetailsServiceUserDetailsService는 User의 name, password에 관여하는 interface class이다.UserDetailsService를 상속한 interface는 UserDetailsManager interface class이고 다시 UserDetailsManager를 상속받아 구현한 class는 InMemoryUserDetailsManager, JdbcUserDetailsManager class이다. 구현부인 InMemoryUserDetailsManager class의 constructor parameter로 여러 UserDetails 정보들을 넘겨줄 수 있다.UserDetails는 Spring security 적용으로 인해 login시 필요한 유저 정..
Spring security에 내가 원하는 filter는 어떻게 추가할까? filter 동작을 구현하고 SecurityFilterChain에 추가하면 된다. httpSecurity의 .addFilterAt, .addFilterBefore, .addFileterAfter가 있다.addFilterAt(Filter filter, Class AtFilter)첫 번째 파라미터는 추가하려는 필터 대상두 번째 파라미터는 함수 이름을 따라 해당 필터가 "언제" 실행될 지 기준이 되는 필터addAtFilter 함수의 경우, 동시에 수행되는 필터의 순서는 랜덤이다.그러므로 순서에 종속성이 없는 필터인 경우 사용해야 한다.addFilterBefore(Filter filter, Class beforeFilter)addFile..
Token은 왜 사용될까?Client가 서버에 접근할 때, 해당 client가 올바른 계정 정보를 가지고 접근했는지 판단하기 위해 사용된다.Client가 username, password를 server로 전송하면Server는 username, password를 검증하고 token을 발급하여 client에게 전달한다.Client는 전달받은 token을 header에 추가하여 원하는 API에 접근하면Server는 token을 검증하고, 유효하다면 데이터를 return한다. 여러 Token 방식이 있는데, 그 중 JWT는 Json 형식의 데이터를 사용하여 token을 생성한다.JWT 방식은 인증 서버 없이도 Client/Server app에서 유효한 지 검증이 가능하다.구성은 아래와 같다. {header}.{..