JWT 인증 방식이란?
- JSON 형식의토큰을 주고 받으면서 인증 하는 방식
- 토큰을 헤더에 실어 서버가 클라이언트를 식별 할 수 있도록 함.
- 기존의 세션 인증 방식을 보완한 방법
구성
-
Header : 해시 알고리즘 등의 메타 정보 포함
-
Payload : key:value
형식의 정보
-
Signature: Header + Payload + Key 를 해싱한 값
▶️ 서버에서 대조 하는 값 (이 때 서버는 비밀 키(secret key)를 사용 )
참고 사이트
https://jwt.io/
Token 인증 방식
특징
- 토큰에 사람 정보가 들어 있음.
- DB를 조회하지 않고 토큰 검증 가능
- 서버 에서 비밀키만 가지고 있으면 토큰 검증 가능
- 서로 다른 웹 서버에 대해서 동작 가능 (= 쿠키와 다른 점)
- 탈취당하면 정보 다 털림 → 사용기한 부여
- 데이터를 변경하면 해시값이 변경 되므로 공격자가 payload 변경이 불가
- 장점 : 위조 방지, 서버 메모리 이점 (DB 조회X)
- 단점: payload 보안이 안되므로, 민감한 정보는 넣으면 안됨.
과정
출처 - https://joosjuliet.github.io/jwt-session/
- Client → Server : 로그인 페이지 요청
- Server → Client : 로그인 페이지 응답
- Client → Server : 로그인 요청 (ID, Passowrd)
- Server : 토큰 생성
- Server → Client : 토큰 응답
- Client : 토큰 저장
- Client → Server : 토큰과 함께 정보 요청
- Server → Client : 토큰 검정 및 응답
- Client → Server : Refresh Token으로 Access Token 재요청
- Server → Client : Access Token 재발급
참고 문헌