TIL - 5주차 화요일

mangjell·2022년 4월 12일
0

로그인

  • 수평 파티셔닝(데이터 샤딩) >>> 데이터베이스까지 데이터부화를 분산할 수 있다.

현 로그인 방식(첫번째)

  • 디스크에 저장하기 대신에 Redis와 같은 메모리기반 데이터베이스에 저장
  • Redis: 메모리기반 데이터베이스(빠르다)

현 로그인 방식(두번째)

  • 메모리기반 데이터베이스에 저장하지말고, 다른 방식으로 저장하자!

  • id를 뺀 나머지만 객체 형태로 만들어놓고, 암호화해서 알수없는 문자열 형태로 만들고, 암호화된 결과를 token id로 쓰자! 는 방식()

  • 객체를 암호화하고, 필요한 것을 복호화해서 DB에 가지않았지만 마치 간 것처럼 하자 라는 방식

  • JWT Jason Web Token: 자바스크립트를 객체로 표현한 것(Javascript Object Notation)

  • JWT를 활용한 흐름:

    	> 암호화된 토큰을 프론트에 주는 것 -> state에 토큰을 저장 -> createProduct와 같은 api를 요청할때, 상품정보를 보내주고, 토큰id를 같이 보내준다 -> 백엔드에서 복호화 -> (`최종적으로 DB에서 긁는 작업을 뺀 것`)

JWT / jwt.io

  • payload: 실제 데이터, 중요한 정보 저장 X
  • signature부분: 일단 복호화 작업에 필요한 비밀번호 라고 생각하자!!

암호화

양방향 암호화

  • 복호화가능하다
  • 해킹 노출 가능성이 있다

단방향 암호화 (Hash)

  • 복호화 불가, 암호화 가능

HTTP HEADERS

  • Query variables HTTP HEADERS부분에 "Authorization": "Bearer accessToken" 하고, fetchUserLoggedIn 쿼리 날려주기!

  • 인증은 한번, 인가는 매번
profile
프론트엔드 개발자

0개의 댓글