로그인 관련 필수 지식, JWT의 기본개념
📕 오늘의 질문
JWT에 대해 설명해보세요
오늘 질문에 대한 답을 살펴보기 전에,
여러분께 드리고 싶은 질문이 있습니다.
사이트에 로그인을 했을 때
유저의 로그인 상태는 어떻게 유지될까요?
이 질문에 대한 답을 알고 계시다면
이미 JWT가 무엇인지 알고 계실 거라 믿습니다.
답을 아직 모르신다면!
어서 이 포스팅을 통해 JWT가 무엇인지
그리고 도대체 왜 갑자기 로그인에 대한 얘기가
나왔는지에 대해 알아보도록 합시다.
JWT란 JSON Web Token을 의미합니다.
JWT는 인가(Authorization)를 위한 기술로,
쉽게 말해 사이트에서 로그인을 유지해서
'나만이' 할 수 있는 행동에 권한을 주는 데
사용되는 기술입니다.
토큰은 암호화된 3가지 데이터를 가지고 있습니다.
JWT의 구조는 header, payload, verify signature 세 가지 부분으로 구성됩니다.
헤더(Header): type과 alg이 들어갑니다.
타입에는 고정값으로 JWT이 들어갑니다.
알고리즘에는 시그니처를 만드는데
사용될 알고리즘이 지정됩니다.
페이로드(Payload):
토큰이 누구에게 발급되었는지,
언제까지 유효한지 그리고
서비스가 사용자에게 이 토큰을 통해
공개하고 싶은 내용(닉네임 등)을 담고 잇습니다.
이처럼 토큰에 담긴 사용자 데이터를
클레임(Claim)이라고 합니다.
시그니처(Verify signature):
헤더와 페이로드 그리고 시크릿 키(암호)를
암호화 알고리즘에 넣으면 시그니처가 나옵니다.
시크릿 키는 서버에만 있기 때문에
사용자 측에서는 이 키를 찾아낼 수 없습니다.
그렇기 때문에 JWT를 조작하기란 어렵습니다.
위 그림처럼 사용자가 요청과 토큰을 보내면
서버는 헤더와 페이로드 값을 시크릿 키와 돌려서
그 결과가 시그니처와 같은 지를 비교합니다.
그 둘이 같다면 해당 사용자는 로그인된 회원으로서 인가를 받아
해당 요청을 수행할 수 있게 됩니다!
이 정도면 JWT에 대한 기본적인 개념은 이해하셨을 것이라 생각됩니다.
관련된 개념을 더 찾아보고 싶으시다면
세션, 쿠키, 인증/인가 등 개념을 공부해보시면 좋을 것 같습니다!
포스팅이 도움이 되었기를 바라며 글 마치겠습니다.
출처
유튜브 얄코 https://www.youtube.com/watch?v=1QiOXWEbqYQ
유튜브 Taehoon https://www.youtube.com/watch?v=7abbNwuCXbg