[TIL] Passport (OAuth 2.0)

Soo·2023년 1월 16일
0
post-thumbnail

💡 passport란?

  • 사용자 인증 절차에 대한 로직을 간단하게 구현할수 있도록 도와주는 Node.js 미들웨어이다.
  • 우리가 어떤 사이트에 로그인을 하면, 다른페이지로 이동해도 로그인 상태는 유지되어야 한다.
  • 우리는 복잡한 세션과 쿠키를 구현해야하는데, 이때 passport 미들웨어로 안전하고 간단하게 설계할 수 있다.

💡 쿠키(Cookie)와 세션(Session)

  • HTTP 프로토콜은 비연결성과 비상태성이라는 특징이 있다. 이로 인해 서버의 자원을 절약할 수 있다.
  • 하지만 같은 사용자가 요청을 여러번 하더라도 매번 새로운 사용자로 인식하는 단점이 있다. 이를 보완하기 위해 쿠키와 세션을 사용하게 되었다.

  • 사용자의 정보를 입력하고 로그인 버튼을 누르면, 브라우저는 HTTP Request를 Server에 보낸다.

  • 로그인 상태를 유지하기 위해서는 브라우저랑 서버는 같은 정보를 들고있어야한다. 서버에 있는 모든 정보를 Client에 주면 해킹의 위험이 있기때문에 랜덤한 문자열인 쿠키를 준다.

  • 서버는 이 쿠키와 사용자의 정보가 연결되어있다는 정보가 필요한데, 세션이 필요한 이유이다.

  • 홈쇼핑을 예로 들면 사용자의 정보에는 id, email, password, nickname, 장바구니 목록들 등이 있을 것이다. 많은 양의 정보들 때문에 Server 메모리에 부담이가게 되는데 passport는 세션을 id하고만 매칭 시켜놓는다.

💡 전략(Strategy) - 기본적으로 인증을 하기 위한 전략

  • passport는 여러가지 전략을 가지고 있다.
  • 그 중 가장 기본적인 전략은 local 전략으로 개발자가 현재 서비스 되고 있는 DB를 이용하여 직접 인증 로직을 구현하는 것이다.
  • 다른 전략은 Google, Naver, Kakao 등 소셜 API를 이용한 전략이다.
  • passport의 전략 부분만 바꿔주면 되므로 유연하게 대처할 수 있다.
    -> passport를 사용하는 가장 큰 이유 중 하나이기도 하다.
profile
Soogineer's Devlog

0개의 댓글