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는 단순히 데이터를 표현하는 형식
장점
- 세션 방식과 다르게 별도의 인증 저장소가 필요 없어서 서버와의 커뮤니케이션을 최소한으로 할 수 있다.
- 트래픽에 대한 부담이 적다.
- 세션과 다르게 독립적인 느낌의 JWT를 활용한다는 것.
단점
- JWT의 크기가 커질수록 거의 모든 요청에 대해 전송되므로 데이터 트래픽 크기에 영향을 미칠 수 있다.
- 토큰은 클라이언트에 저장되기 때문에 DB에서 사용자 정보를 수정하더라도 토큰에 직접 적용할 수 없다.
JWT 프로세스
- 사용자가 id와 password를 입력하고 서버로 로그인 요청을 보낸다.
- 서버는 비밀 키(secret key) 를 통해서 서명을 하고 공개 키(public key)로 암호화 시킨 Access Token을 발급한다.
- 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 |