dorong36.log
로그인
dorong36.log
로그인
[Node.js] JWT / 세션기반, 토큰기반 인증 시스템
Dorong
·
2023년 7월 21일
팔로우
0
JWT
jsonwebtoken
node.js
study
Node.js / MongoDB
목록 보기
19/23
✅ JWT
JWT는 JSON Web Token의 약자로,
데이터가 JSON으로 이루어져 있는 토큰 의미
두 개체가 서로 안전하게 정보를 주고받을 수 있도록 웹 표준으로 정의된 기술
🔸 세션 기반 인증 vs. 토큰 기반 인증
사용자의 로그인 상태를 서버에서 처리하는 데 사용할 수 있는 대표적 두 가지 인증방식
🔹 세션 기반 인증 시스템
세션기반 인증 시스템을 만드는 것은 서버가 사용자가 로그인 중임을 기억하고 있다는 뜻
사용자가 로그인하면, 서버는 세션 저장소에 사용자의 정보를 조회하고 세션 id 발급
발급된 id는 주로 쿠키에 저장
이후 사용자가 다른 요청을 보낼 때마다 서버는 세션 저장소에서 세션을 조회한 후 로그인 여부를 결정하여 작업을 처리하고 응답
세션 저장소는 주로 메모리, 디스크, DB 등을 사용
하지만 서버 확장이 번거롭다는 단점
서버의 인스턴스가 여러 개가 된다면 모든 서버끼리 같은 세션을 공유해야 하므로,
세션 전용 DB를 만들어야 할 뿐 아니라 신경 써야 할 것도 많음
🔹 토큰 기반 인증 시스템
토큰은 로그인 이후 서버가 만들어 주는 문자열
해당 문자열 안에는 사용자의 로그인 정보와 해당 정보가 서버에서 발급되었음을 증명하는 서명이 들어있음
서명 데이터는 해싱 알고리즘을 통해 만들어지는데,
주로 HMAC SHA256, RSA SHA256 알고리즘 사용
토큰은 서명이 있기 때문에 무결성이 보장됨
시스템 흐름은
사용자가 로그인 시 서버에게 토큰을 발급받고,
사용자는 추후 다른 API 요청시 토큰과 함께 요청하게 됨
서버는 토큰 유효성 검사를 하고, 결과에 따라 작업을 처리하고 응답
서버 확장성이 높다는 장점
서버에서 사용자 로그인 정보를 기억하기 위해 사용하는 리소스가 적음
사용자 쪽에서 토큰을 가지고 있으므로 서버의 확장성이 높음
서버 인스턴스가 여러 개로 늘어나도 서버끼리 사용자의 로그인 상태를 공유하고 있을 필요가 없음!!
Dorong
AI R&D와 웹/앱개발 욕심쟁이 멀티 플레이🐖
팔로우
이전 포스트
[Node.js] 페이지네이션 구현
다음 포스트
[MongoDB] User Shema / Model
0개의 댓글
댓글 작성