날짜: 2022년 10월 28일 금요일

키워드 및 질문

본문

<aside> 📌 요약: JWT(JSON Web Token)이란 인증을 위해 저장소를 사용하지 않고 전자서명을 이용하여 확인하는 방법이다. header, payload, signature로 구성되어 있고 디코드하면 내용이 노출되기 때문에 민감한 정보를 담으면 안된다. 비공개키를 이용하여 서명하는데, payload를 변경할 경우 signature도 변경되기 때문에 무결성을 보장한다. 작동 방식은

  1. 사용자 로그인
  2. 로그인된 유저 정보를 JWT로 생성하여 클라이언트에 전달
  3. 클라이언트는 전달받은 JWT를 이용하여 인증이 필요한 요청에 사용 JWT를 사용하는 이유는 session은 웹 브라우저의 통신 스펙인데 반해 모바일 등 다른 어플리케이션에서 동일한 방식으로 사용자 인증을 구현할 수 있기 때문.

Cookie는 웹서비스에서 사용하는 정보를 클라이언트에 저장하고 HTTP 요청시 이를 함께 전송하여 클라이언트 정보를 서버에 전달하는 기술이다. Session은 클라이언트 정보를 서버 측에 저장하고 사용하는데 반해 Cookie는 클라이언트 정보를 브라우저에 저장하고 사용한다. JWT와 Cookie를 같이 사용하면 데이터베이스에 접근하지 않고 JWT 요청이 들어왔을때 서명만 확인하고 유저 정보를 사용한다.

SMTP 서버는 표준 규약을 통해 메일 전송 기능을 구현한 서버다. Node.js에서는 Nodemailer 패키지를 사용하여 SMTP 서버를 통해 메일 발송 가능.

OAuth란 Open Authorization으로 서비스 제공자가 다른 서비스에게 데이터를 제공하기 위한 사용자의 인증을 제공하는 표준이다. 이를 이용하여 로그인 기능을 간편하게 구성할 수 있다. passport-google-oauth20과 같은 구글 로그인 구현체를 사용하여 구글 OAuth2.0을 손쉽게 구현할 수 있다.

Nginx는 웹서버 소프트웨어다. 웹서버 소프트웨어는 HTTP 요청을 받고 실행 결과를 HTTP 응답으로 보내주는 소프트웨어다. NodeJS는 해당 기능을 이미 가지고 있지만, Nginx에는 HTTPS, 도메인 연결, static file caching 등 production-level 서비스를 구축 할 수 있기 때문에 사용한다. 또한 Nginx의 reverse-proxy 기능을 사용해서 HTTP 요청을 다른 서버에 전달할 수 있다.

</aside>