[내일배움캠프 Spring 4기] 28일차 TIL - 인증과 인가 | 쿠키와 세션 | JWT

서예진·2024년 1월 29일
0

오늘의 학습 키워드 📕

▸ 코트카타
▸ 인증과 인가
▸ 쿠키와 세션
▸ JWT


▼ 코트카타

2024년 1월 26일 - [프로그래머스] 14 : 모의고사 완전 탐색 | 소수 만들기


▼ 인증과 인가

📍인증과 인가란?

  • 인증(Authentication): 해당 유저가 실제 유저인지 인증하는 것
  • 인가(Authorization): 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 것
    => 로그인 - 인증 / 회원, 비회원 여부 - 인가

📍인증의 방식

  • 쿠키-세션 방식의 인증
    • 서버가 '특정 유저가 로그인 되었다'는 상태를 저장하는 방식
    • 인증과 관련된 최소한의 정보는 저장해서 로그인을 유지시킨다는 개념
  • JWT 기반 인증
    • JWT: 인증에 필요한 정보들을 암호화시킨 토큰을 의미
    • JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트를 식별

▼ 쿠키와 세션

📍쿠키와 세션

  • 쿠키: 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
  • 세션: 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용됨
    • 서버에서 클라이언트 별로 유일무이한 '세션 ID'를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
    • 서버에서 생성한 '세션 ID'는 클라이언트의 쿠키값('세션 쿠키')으로 저장되어 클라이언트 식별에 사용됨

▼ JWT

📍JWT 란?

  • JWT: JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반이 Web Token -> 토큰의 한 종류
  • 일반적으로 쿠키 저장소를 사용하여 JWT를 저장

📍JWT 장/단점

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

📍JWT 사용 흐름

  1. Client가 username, password로 로그인 성공 시
    a) 서버에서 "로그인 정보" -> JWT로 암호화 (Secret Key 사용)
    b) 서버에서 직접 쿠키를 생성해 JWT를 담아 Client 응답에 전달
    c) 브라우저 쿠키 저장소에 자동으로 JWT 저장됨
  1. Client에서 JWT 통해 인증 방법
    a) 서버에서 API 요청 시마다 쿠키에 포함된 JWT를 찾아서 사용

    b) Server

    • Cleint가 전달한 JWT 위조 여부 검증 (Secret Key 사용)
    • JWT 유효기간이 지나지 않았는지 검증

    C) 검증 성공시,

    • JWT -> 에서 사용자 정보를 가져와 확인
profile
안녕하세요

0개의 댓글