JWT 재정리..

SaGo_MunGcci·2022년 7월 29일
0

스프링

목록 보기
10/31

Today do list

-JWT공부만 함.



TIL

1. JWT 란?

  • JWT 사용이유 파악



JWT 장/단점

  1. 장점
  • 동시 접속자가 많을 때 서버 측 부하 낮춤
  • Client, Sever 가 다른 도메인을 사용할 때
  • 예) 카카오 OAuth2 로그인 시 JWT Token 사용
  1. 단점
  • 구현의 복잡도 증가
  • JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
  • 기생성된 JWT 를 일부만 만료시킬 방법이 없음
  • Secret key 유출 시 JWT 조작 가능

JWT 사용 흐름 Overview

    1. Client 가 username, password 로 로그인 성공 시
      a. "로그인 정보" → JWT 로 암호화 (Secret Key 사용)

Sample

b. JWT 를 Client 응답에 전달

c. Client 에서 JWT 저장 (쿠키, Local storage 등)

    1. 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을 발급하는 예제까지 공부해야겠다.



profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글