반응형
이 포스팅은 아래의 강의를 참고하였으니 여기에서 공부하시는 것을 추천드립니다.
JWT를 공부하기 전에 아래의 기초 배경 지식들을 이해하고 들어가자.
1. 세션 및 쿠키의 기본 흐름
- 사용자가 특정 웹사이트에 최초 요청을 함.
- 서버에서 세션 정보 그리고 이 세션 정보를 대표하는 세션ID를 생성하고 header에 세션ID를 담아서 보내줌 웹 브라우저에 보내줌
- 그럼 사용자의 웹 브라우저는 이 세션 ID를 쿠키라는 웹브라우저의 저장소에다가 저장
- 이후에 요청할 때는 세션 ID를 담아서 요청함
- 서버에서 해당 세션ID를 검증, 확인
세션이 삭제되는 경우
- 서버에서 세션을 삭제
- 세션이 특정 시간동안 접근되지 않을 때 삭제
로드밸런싱
- 서버의 부하를 분산시키는 방법
- ex) 하나의 웹사이트가 2대의 서버로 운영되고 있을 때, A서버에 사용자가 몰릴 경우 B서버에 요청하는 방식
- 로드밸런싱 시, 발생할 수 있는 현상
- A서버에 세션을 생성했는데 B서버로 접근 시, 세션정보가 없어 다시 생성해야하는 현상
- 각 서버에 저장하는 것이 아닌 메모리 공유 서버에 세션 정보를 저장하게 하는 것도 해결 방법이 될 수 있음
2. OSI 7 계층 / TCP vs UDP
JWT에 대해서 이해하기 전에 OSI 7 계층과 TCP, UDP 전송 방식에 대한 배경지식이 필요하다.
- OSI 7 계층 : https://ajdahrdl.tistory.com/195
TCP : 연결 지향형 프로토콜, 가상 회선을 만들어 신뢰성을 보장하도록(흐름 제어, 혼잡 제어, 오류 제어) 하는 프로토콜, UDP에 비해 속도가 느린편, 신뢰성이 중요한 서비스에 사용
UDP : 데이터를 데이터그램단위로 전송하는 프로토콜, 스트리밍처럼 연속성이 중요한 서비스에 사용. UDP도 신뢰성을 UDP자체에서 보장하지 않는 것 뿐이지, 개발자가 직접 신뢰성을 보장하도록 할 수 있음
JWT, 인증 등과 같이 보안과 관련된 기능은 신뢰성을 보장하는 TCP 통신 방식을 이용한다.
3. 보안
1) 보안의 3요소(CIA)
- 기밀성(Confidentiality) : 오직 인가된 사용자 / 프로세스 / 시스템 만 접근할 수 있는 특징
- 가용성(Availcbility) : 사용자가 필요로 하는 시점에 접근 가능해야 한다는 특징
- 무결성(Integrity) : 데이터 / 시스템 등이 변조로부터 보호되어야 한다는 특징
2) RSA
- 공개키 암호화 알고리즘 중 하나이며, 세계적으로 많이 사용되는 알고리즘
- 대표적으로 전자서명에서 사용된다.
- 두 개의 키를 이용한다.
- 공개키(Public Key) : 공개해도 되는 키
- 개인키(Private Key) : 공개하면 안 되는 키
- 위의 두 키를 이용해서 암호화와 복호화가 가능하다.
- RSA 알고리즘 방식
- 철수가 영미한테 비밀 정보를 보내려고 한다.
- 영미는 자신의 공개키와 비밀키를 만든 후, 철수에게 영미의 공개키를 보낸다. (영미의 개인키는 영미 본인만 가지고 있음)
- 철수는 영미한테 받은 영미의 공개키를 이용해서 비밀 정보를 암호화한다.
- 철수가 3번에서 암호화한 정보를 영미에게 보낸다.
- 영미는 철수에게 받은 암호화된 정보를 영미 개인키를 이용해서 복호화를 진행하여 원본 정보를 볼 수 있다.
반응형
'BE > Spring' 카테고리의 다른 글
[Spring Security] JWT - 3. JWT 임시 토큰 테스트 및 로그인 시 토큰 생성 (0) | 2022.06.18 |
---|---|
[Spring Security] JWT - 2. JWT 필터 설정 및 필터 우선순위 적용 방법 (0) | 2022.06.11 |
[Spring Security] 네이버 로그인하기 (0) | 2022.06.06 |
[Spring Security] 페이스북 로그인하기 (0) | 2022.06.03 |
[Spring Security] oAuth2.0 - 구글로 로그인하기 (0) | 2022.06.02 |