대부분의 웹 애플리케이션 서버가 세션을 지원. 편리함
서버에서 세션을 관리
- 서버가 여러대일 경우
- SSO인 경우 비용
비용증가
클라이언트가 토큰을 저장
모든 요청에 토큰을 가지고 접근
세션 대신 토큰을 사용하려는 이유는 확장성 때문이다. 만약 여러 서버가 돌아가는 상황이라면, 각 서버마다 세션 저장소를 두거나, 공통 세션 저장소를 만들어야하는데, 이 또한 비용이다. 반면에 토큰은 stateless 하기 때문에 확장에 용이하다.
출처 : https://velog.io/@max9106/OAuth
사용자 인증
디지털 서명이 되어 있어 신뢰할 수 있다
서명된 토큰에 중점
서명 토큰안의 클레임의 무결성 보장
xxxxx,yyyyy,zzzzz
{
"alg" : "HS256",
"typ" : "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
인코딩, 디코딩 가능
HMAC or RSA
출처 : https://jwt.io/introduction
나머지는 자유(개인 클레임)