개인정보 등 중요한 정보를 전달하거나 인증할 때 사용되는 토큰. 신분증같은 것이라고 생각하면 될 듯?
강의에서 인증 방식에는 세션방식
과 토큰방식
이 있다고 하면서 (엄청)가볍게 설명했음
로그인 정보를 유지할 때 세션
이라는 기술을 통해 개인정보를 서버에 저장하여 요청할 때 사용자정보를 판별함
위 경우 사용자가 늘어나면 서버에 저장해야하는 정보가 많아져 이후 DB나 서버의 확장이 필요해짐.
토큰
의 경우는 토큰 자체에 발급자, 발급일, 만료일자, 권한범위 등의 정보를 가지고 있다.
(아이디,비밀번호등의 민감한 정보는 XX)
JWT는 헤더(header), 페이로드(payload), 서명(signature) 세 파트로 나눠져 있다.
서버에서 JWT를 발급한 후 저장과 관리는 클라이언트의 몫임.
서버는 요청이 들어온 JWT가 유효한지만 확인함.
서버측의 자원과 비용을 절감할 수 있지만 대부분 브라우저가 종료되면 만료되는 세션과 달리 유효기간이 비교적 긴 JWT가 유출되어 사용될 수 있음
이를 보완하기 위해 access token
과 refresh token
두가지 토큰을 사용함
로그인 요청
→ 서버 사용자 DB 확인
access token, refresh token 발급(refresh token은 서버측 저장소에 저장)
→ 클라이언트 access token, refresh token 저장
데이터 요청 with access token
→ 서버 access token 검증
요청된 정보 응답
→ 클라이언트데이터 요청 with refresh token
→ 서버 별도로 저장된 refresh token과 비교
새로운 access token 발급
→ 클라이언트