TIL 2023-11-08 JWT

장규빈·2023년 11월 8일

TIL

목록 보기
20/59

인증과 인가

인증(Authentication)

인증은 해당 유저가 실제 유저인지 인증하는 개념이며 실제 그 유저가 맞는지를 확인하는 절차 입니다.

인가(Authorization)

인가는 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념이다. 예를들어 권한 같은 것들을 들 수 있다.

JWT란

어플리케이션에서 인증과 인과를 하는 방식중에 하나로 JWT(Json Web Token)란 JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token 이다.

JWT의 장단점

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

JWT 사용 흐름

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

2. 서버에서 직접 쿠키를 생성해 JWT를 담아 Client 응답에 전달

3. 브라우저 쿠키 저장소에 자동으로 JWT 저장됨

4. 인증된 서버에 API 요청 시마다 쿠키에 포함된 JWT를 찾아서 사용
5. Client 가 전달한 JWT 위조 여부 검증 (Secret Key 사용), JWT 유효기간이 지나지 않았는지 검증

JWT 구조

JWT 는 누구나 평문으로 복호화 가능, 하지만 Secret Key 가 없으면 JWT 수정 불가능!

profile
나다운사람

0개의 댓글