Today do list
-JWT공부만 함.
TIL
1. JWT 란?
JWT 장/단점
- 장점
- 동시 접속자가 많을 때 서버 측 부하 낮춤
- Client, Sever 가 다른 도메인을 사용할 때
- 예) 카카오 OAuth2 로그인 시 JWT Token 사용
- 단점
- 구현의 복잡도 증가
- JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
- 기생성된 JWT 를 일부만 만료시킬 방법이 없음
- Secret key 유출 시 JWT 조작 가능
JWT 사용 흐름 Overview
- Client 가 username, password 로 로그인 성공 시
a. "로그인 정보" → JWT 로 암호화 (Secret Key 사용)
Sample
b. JWT 를 Client 응답에 전달
c. Client 에서 JWT 저장 (쿠키, Local storage 등)
- Client 에서 JWT 통해 인증방법
a. JWT 를 API 요청 시마다 Header 에 포함
예) HTTP Headers
Content-Type: application/json
Authorization: Bearer <JWT>
b. Server
- a. Client 가 전달한 JWT 위조 여부 검증 (Secret Key 사용)
- b. JWT 유효기간이 지나지 않았는지 검증
- c. 검증 성공시,
- a. JWT → "로그인 정보" (UserDetailsImpl) 만들어 사용
ex) GET /api/products : JWT 보낸 사용자의 관심상품 목록 조회
JWT 구조
- JWT 는 누구나 평문으로 복호화 가능
하지만 Secret Key 가 없으면 JWT 수정 불가능
→ 결국 JWT 는 Read only 데이터
Retrospection
jwt가 이런식으로 구동하는 지 몰랐다.
이론과 직접코딩해보는 것은 확실히 다르다
이론만 공부하다가 이해가 안됐지만 이해안해도 코딩하니까 뭔가 하는 것 같다.
내가 오늘 공부한 예제
참고 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-jwt#reviews
Tommorrow do list
내일은 오늘 공부한 예제를 뜯어보고 access token + refresh token을 발급하는 예제까지 공부해야겠다.