JWT(JSON Web Token)의 개념부터 구현까지 알아보기
JWT
- 유저를 인증하고 식별하기 위한 토큰기반 인증이다.
- 서버가 아닌 클라이언트에 저장된다.
- 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함된다.
- JWT를 사용하여 RESTful과 같은 무상태인 환경에서 사용자의 데이터를 주고 받을 수 있다.
- JSON 데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이 포함
flow
- 클라이언트 사용자가 아이디, 패스워드를 통해 웹서비스 인증
- 서버에서 서명된 JWT를 생성하여 클라이언트에 응답으로 반환
- 클라이언트가 서버에 데이터를 요청할 때마다 HTTP Header에 JWT 첨부
- 서버에서 클라이언트의 JWT 검증
구조
- Header, Payload, Signature로 구성
- 각 요소는
.
(온점)으로 구분
- Header : JWT에서 사용할 타입과 해시 알고리즘의 종류의 정보
- Payload : 서버에서 첨부한 사용자 권한 정보와 데이터