클라이언트가 너무 많으면 (동시접속자 수가 서버가 처리할 수 있는 수보다 많으면) 서버를 여러 대를 사용 -> 로드 밸런싱
ex) 서버가 100명 처리 가능 but 클라이언트 300명이 접속 -> 서버 3대 만들기 (A, B, C)
만약 한 클라이언트가 서버 A에 최초 요청해서 세션을 받음, 후에 두번째 요청에서 서버 A가 바빠서 서버 B로 가게 됨 -> 서버 B에서는 최초 요청으로 인식 -> 문제
a가 b에게 문서를 보내는데(1234) b의 공개키로 감싸고 a의 개인키로 또 감싸면 된다.
이때 b는!
즉, RSA 암호화 방식은 b의 공개키로 먼저 감싸고, a의 개인키로 한 번 더 감싸는 것
-> 인증 해결, 암호화 해결
정보를 JSON 객체로 안전하게 전송하기 위한 방식 (RFC 7519 문서에 만들어짐)
Header / Payload / Signature
토큰 유형과 서명 알고리즘 두 부분으로 구성
{
"alg": "HS256",
"typ": "JWT"
}
JSON은 Base64Url로 인코딩 되어 JWT 첫 번째 부분을 형성
(Base64Url은 암호화 하고 나서 디코딩 가능)
클레임을 포함하는 페이로드는 JWT 두 번째 부분을 형성
{
"sub": "123456789",
"name": "yeonji",
"admin": true
}
서명 부분은 인코딩 된 헤더(header) + 인코딩 된 페이로드(payload) + secret
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
🎈 목적은 암호화가 아니라 전자서명이다.!!! (요청 보낸 사람이 본인이 맞다는 걸 증명)