기술 학습

Passport란?

hawon6691 2026. 2. 4. 11:21
728x90

1. Passport란 무엇인가? (Definition)

Passport는 Node.js용 인증(Authentication) 미들웨어입니다.

웹 사이트에서 "이 사용자가 누구인지" 확인하는 절차를 담당하죠. Express에 딱 들어맞게 설계되어 있어서 app.use()로 간편하게 연결할 수 있습니다.


2. 왜 사용하는가? (Identity & Benefits)

로그인을 직접 구현(Hard Coding)하려고 하면 다음과 같은 복잡한 문제에 직면합니다.

  • 비밀번호를 어떻게 안전하게 대조할 것인가?
  • 로그인 상태를 세션(Session)에 저장할 것인가, 토큰(JWT)으로 관리할 것인가?
  • 구글, 카카오 등 소셜 로그인은 각각 API 형식이 다른데 어떻게 통합할 것인가?

Passport를 쓰면 이 고민이 해결됩니다.

  1. 단일 인터페이스: 로그인 방식이 바뀌어도 passport.authenticate()라는 함수 하나로 인증을 처리할 수 있습니다.
  2. 500개 이상의 전략(Strategies): 구글, 페이스북, 트위터는 물론, 지문 인식이나 JWT까지 이미 누군가 만들어둔 '전략' 모듈만 설치하면 바로 쓸 수 있습니다.
  3. 관심사 분리: 비즈니스 로직(내 앱의 기능)과 인증 로직(로그인)을 깔끔하게 분리할 수 있습니다.

3. 어떻게 사용하는가? (Process)

Passport 사용법은 크게 4단계 설정으로 요약됩니다.

① 설치 및 전략 선택

먼저 기본 모듈과 내가 쓸 전략(예: 로컬 로그인)을 설치합니다.

Bash
 
npm install passport passport-local

② 전략 설정 (Configuration)

"로그인 시 어떤 값을 확인하고, DB에서 어떻게 사용자를 찾을 것인가"를 정의합니다.

JavaScript
 
passport.use(new LocalStrategy(
  (username, password, done) => {
    // 1. DB에서 유저 찾기
    // 2. 비밀번호 대조
    // 3. 성공하면 done(null, user) 호출
  }
));

③ 세션 처리 (Serialization)

로그인 성공 후 "사용자의 어떤 정보(예: ID)"를 세션/쿠키에 저장하고 다시 꺼내올지 설정합니다.

  • serializeUser: 로그인 성공 시 세션에 유저 ID 저장.
  • deserializeUser: 다음 접속부터 세션의 ID로 DB에서 유저 전체 정보를 조회 (요청 객체 req.user에 담아줌).

④ 라우트 적용 (Implementation)

로그인 경로에 미들웨어로 끼워 넣기만 하면 끝입니다.

JavaScript
 
app.post('/login', 
  passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' })
);

요약하자면

  • 무엇? 인증을 대신 처리해주는 비서.
  • 왜? 로그인 방식이 아무리 늘어나도 코드가 깔끔하고 안전하니까.
  • 어떻게? 전략 설치 -> 전략 설정 -> 세션 설정 -> 라우터에 적용 순서로.
728x90

'기술 학습' 카테고리의 다른 글

req, res, next 란?  (0) 2026.02.04
미들웨어(Middleware)란?  (0) 2026.02.04
엔드포인트란?  (0) 2026.02.02
express.Router() 란?  (0) 2026.01.29
MVC란?  (0) 2026.01.29