22/99 node 심화 로그인 관련 용어 정리

2022. 5. 30. 23:26항해99 일지

TIL

네번째 월요일이 시작되었습니다. 처음의 마음가짐과 같지않지만 다시 정신차리고 써봅시다.

 

오늘 쓸 내용은 Node.js 심화 2주차 정리 입니다.

목표는 로그인 , 회원가입 기능의 구현입니다. 

강의에 필요한 선행지식부터 정리하겠습니다.

 

1. 쿠키 & 세션

  • 쿠키: 브라우저가 서버로부터 응답으로 Set-Cookie 헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보냅니다.데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약할 수 있습니다.
  • 세션: 쿠키를 기반으로 구성된 기술입니다. 단, 클라이언트가 마음대로 데이터를 확인 할 수 있던 쿠키와는 다르게 세션은 데이터를 서버에만 저장하기 때문에 보안이 좋으나, 반대로 사용자가 많은 경우 서버에 저장해야 할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제가 생기기 쉽습니다

내가 겪은 상황을 생각해보면

PC방에 가서 디스코드나, 유튜브에 로그인하려할때 이미 한번 가서 로그인했던 곳인 경우 별도의 인증없이 로그인이 된다.

그 이유는 서버에서 해당 PC방에 쿠키를 발급했기 때문이다. 하지만 이후 처음가보는 PC방이거나 갔던 곳을 정말 오랜만에 가는 경우 

로그인하려면 별도의 인증이 필요하다. 그 이유는 해당 PC방은 이에 해당하는 쿠키를 서버에서 발급받은 적이 없거나 이후 세션을 초기화하여 리스트에 쿠키를 발급받은 브라우저가 없기 때문이다.

 

Authentication(인증) : 로그인 정보 인증

Authorizaion(인가): 로그인이 되고있는 상태임을 인가

 

캐시(cache)

리소스 파일들의 임시 저장소. 같은 웹 페이지에 접속할 때 사용자의 PC에서 로드하므로 서버를 거치지 않아도 된다. 

 

JWT (Json WebToken)

인증에 필요한 정보들을 토큰에 토큰에 담아 암호화시켜 사용하는 토큰

데이터를 교환하고 관리하는 방식인 쿠키/세션과 달리, JWT는 단순히 데이터를 표현하는 형식

장점

  1. 세션 방식과 다르게 별도의 인증 저장소가 필요 없어서 서버와의 커뮤니케이션을 최소한으로 할 수 있다.
  2. 트래픽에 대한 부담이 적다.
  3. 세션과 다르게 독립적인 느낌의 JWT를 활용한다는 것.

단점

  1. JWT의 크기가 커질수록 거의 모든 요청에 대해 전송되므로 데이터 트래픽 크기에 영향을 미칠 수 있다.
  2. 토큰은 클라이언트에 저장되기 때문에 DB에서 사용자 정보를 수정하더라도 토큰에 직접 적용할 수 없다.

JWT 프로세스

  1. 사용자가 id와 password를 입력하고 서버로 로그인 요청을 보낸다.
  2. 서버는 비밀 키(secret key) 를 통해서 서명을 하고 공개 키(public key)로 암호화 시킨 Access Token을 발급한다.
  3. Access Token을 사용자(클라이언트)에게 보낸다.

JWT의 사용

 

출력:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjo5MDksImlhdCI6MTY1MzkwNDc0OH0.JB9f7Zd_4ZeNZg_h3IGIaoJ8ZmPihxOKWFFsW1XhGsY
 
{ myPayloadData: 909, iat: 1653904748 }

 

'항해99 일지' 카테고리의 다른 글

28/99 ORM? SQL? NOSQL?  (0) 2022.06.05
23/99 알고리즘 ? 시간복잡도 ?  (0) 2022.06.01
21/99  (0) 2022.05.30
19/99 node 기초주차 단어들 정리  (0) 2022.05.27
13/99 자바스크립트 ES6 ?  (2) 2022.05.23