Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token
(토큰 자체를 정보로 사용하는 Self-Contained 방식으로 안전하게 정보 전달)
주로 회원 인증, 정보 전달에 사용
typ : 토큰의 타입 지정 ex)JWT
alg : 알고리즘 방식을 지정하며 서명(Signature) 및 토큰 검증에 사용 ex)HS256, RSA
{
"alg": "HS256",
"typ": JWT
}
토큰에서 사용할 정보의 조각들인 클레임(Claim)이 담겨 있음
총 3가지로 나뉘며 Json(Key/Value) 형태로 다수의 정보 넣을 수 있음
토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드
-> 헤더와 페이로드의 값을 각각 base64URL로 인코딩하고 인코딩한 값을 비밀키를 이용해 헤더에서 정의한 알고리즘으로 해싱을 하고 이 값을 다시 base64URL로 인코딩하여 생성
유효기간이 짧은 Token을 발급하게 되면 사용자는 자주 로그인을 해야하기 때문에 번거롭고,
유효기간이 긴 Token을 발급하게 되면 제 3자에게 탈취당할 경우 보안에 취약
-> 이 점들을 보완하기 위해 Refresh Token 사용
-> Access Token의 유효기간이 만료 되었을 때 Refresh Token이 새로 발급해주는 열쇠가 됨
Self-Contained 특성에 따라 별도의 인증 저장소 필요로 하지 않음
MSA 환경에서 중앙 집중식 인증 서버와 DB에 의존하지 않는 인증 및 인가 방법 제공
서버의 자원을 사용하는 횟수가 JWT가 세션에 비해 훨씬 적음
-> JWT는 사용자의 정보가 토큰의 PayLoad에 저장되어 있어서 서버 자원에 접근하지 않아도 인증/인가 가능
JWT는 트래픽이 많아져 다중 서버로 늘렸을 때에도 문제 없이 사용할 수 있음