Express.js와 MongoDB로 웹서비스 만들기 3
JWT의 이해
JWT란?

JWT의 구성
- header: 토큰의 타입(jwt), 데이터 서명 방식
- payload: 전달되는 데이터
- signature: 헤더와 페이로드의 전자서명
JWT는 Web Token, 데이터를 웹에서 사용하기 위한 스펙이므로 웹에서 문제없이 사용할 수 있는 문자열로만 구성된 base64 인코딩을 사용
JWT 예시

JWT와 보안

JWT 작동 방식
- 사용자 로그인
- 서버는 로그인된 유저 정보를 JWT로 생성하여 클라이언트에 전달
- 클라이언트는 전달받은 JWT를 이용하여 인증이 필요한 요청에 사용
JWT 사용 이유

JWT + Cookie 사용하기
Cookie란?
- 웹 서비스에서 사용하는 정보를 클라이언트에 저장하고, HTTP 요청 시 이를 함께 전송하여, 클라이언트 정보를 서버에 전달하는 기술
JWT + Cookie

JWT 로그인 구현하기(지금까지 설정했던 프로젝트에)
- 기존 세션으로 구현된 로그인 비활성화
- 로그인 로직에서 JWT 생성 후 쿠키로 전달
- passport-jwt 패키지로 JWT 로그인 미들웨어 작성 및 사용
로그인 로직에 JWT 토큰 생성 및 쿠키 전달

passport-jwt 사용하기

JWT 미들웨어 추가

로그아웃

회원 비밀번호 찾기 구현
메일 발송기능 구현 방법

SMTP란?

Node.js에서 메일 발송하기

Nodemailer + Gmail 사용하기


비밀번호 초기화 기능 개발

초기화 후 로그인 시 비밀번호 변경 요청

OAuth2.0의 이해
OAuth란?

OAuth 동작 방식
- 서비스 제공자에게 인증 요청
- 인증 완료 후 사용자 정보를 요청한 서비스로 전달
- 인증 정보를 이용해 서비스 제공자의 데이터 사용
OAuth 사용 예시
- 구글 OAuth 인증 요청
- 인증된 OAuth Token을 기록
- OAuth Token을 사용하여 구글 캘린더 API 사용
OAuth와 로그인

구글 로그인 구현하기
구글 로그인 구현 순서

passport-google-oauth20

passport-google-oauth20 작성



추가 - Nginx 사용하기
Nginx란?

Nginx를 사용하는 이유


Nginx + Node.js


Nginx + Node.js 설정 파일 예시

이미지 출처 - Elice