JWT 이해에 필요한 배경지식들 정리
기존 세션 방식의 문제점#
로드 밸런싱 (여러대의 서버가 나누어 운영)에서, 세션 처리를 어떻게 해야될지 난감#
EX)
- A,B,C라는 서버 3대가 요청을 처리중
- 사용자가 A서버에 로그인을 처리해서 세션쿠키 발급받음
- 갑자기 A서버에 트래픽이 몰려서, B서버에서 다음 작업을 수행
- B서버는 사용자에 대한 세션이 없음
또한, 서버의 메모리를 소모하므로, 사용자가 많아지면 ….
** 이래서 in-memory DB (redis등) 에서 세션을 저장하고. 모든 서버가 이에 접근하게 함 **
CIA#
미국 중앙정보국
Confidentiality(기밀성), Integrity(무결성), Availability(가용성)
- Confidentiality(기밀성) : 정보는 인가된 사용자만 접근할 수 있어야 함
- Integrity(무결성) : 정보가 전송 중 변경되지 않았다는 것을 보장
- Availability(가용성) : 정보가 필요할 때, 항상 접근가능해야함
RSA#
공개 키 암호화 알고리즘
public key, private key
A==>B
- A는 B의 공개키로 암호화하여 데이터 전송
- B는 B의 개인키로 복호화
- 공개키로 잠그면, 개인키로 열 수 있음 (암호화)
- 개인키로 잠그면, 공개키로 열 수 있음 (전자서명)
디지털 서명#
위의 송신과정에 더해
- A는 메시지의 해시값을 자신의 개인키로 암호화해서 디지털 서명을 생성하고, 이것을 메시지와 함께 전송
- B는 A의 공개키를 사용해서 디지털 서명을 복호화하고, 이렇게 얻은 해시값을 메시지의 해시값과 비교
- 일치한다면, B는 송신자가 A이고, 중간에 변경되지 않았음을 확신
RFC#
Request For Comments
인터넷과 관련된 표준과 프로토콜을 설명하고 정의하는 공식 문서 집합 JWT는 RFC 7519에 정의되어 있음