본문 바로가기
패스트캠퍼스 환급챌린지

패스트캠퍼스 환급챌린지 23일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

by 논문보관함 2025. 3. 27.

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/4hTSJNB

 

🔥누적 수강 9백만 시간 돌파 기념 100% 페이백 (03.22 - 03.27) | 패스트캠퍼스

단 6일 한정! 지금 수강 시작하면 수강료 100% 돌려드려요!

fastcampus.co.kr

0327 목

학습 내용 정리

nestjs

Passport란?

- 모듈화된 인증 시스템

- 미들웨어 기반 디자인 : 비파괴적

-일반화된 가벼운 코어 : spacious strategy 가능

- 세션 및 토큰 방식 사용: 세션 기반과 토큰 기반의 인증 시스템

- 방대한 생태계 : 다양한 오픈소스 무료 공개

 

 

 

학습후기

🌐 Passport란 무엇인가?

Passport는 Node.js에서 널리 사용되는 모듈화된 인증 미들웨어입니다. 다양한 인증 전략(Strategy)을 유연하게 지원하며, 이를 통해 우리가 필요로 하는 인증 로직을 확장성과 재사용성을 갖춘 형태로 구현할 수 있습니다. 이번 실습에서도 passport-local 전략을 사용해 기본적인 로그인 흐름을 구현했으며, NestJS와의 통합을 통해 어떻게 Passport를 효과적으로 활용할 수 있는지를 학습했습니다.

✨ Passport 특징 요약

  • 모듈화된 구조: 각각의 인증 방식은 독립된 전략으로 관리됨
  • 미들웨어 기반 디자인: 인증 로직을 기존 로직과 분리하여 유지보수성과 확장성이 우수
  • 가벼운 코어: core는 매우 단순하며, 전략(Strategy)을 통해 다양한 인증 방식 지원
  • 세션 및 토큰 기반 모두 지원: 상황에 따라 유연하게 선택 가능
  • 방대한 전략 생태계: OAuth, JWT, Local, SAML 등 다양한 인증 전략이 이미 구현되어 있음

🧪 실습 내용 요약

이번 실습에서는 Local Strategy를 기반으로 한 로그인 인증을 구현했습니다. 실습 내용은 local.strategy.ts와 auth.service.ts 파일 중심으로 구성되었으며, 다음과 같은 흐름으로 동작합니다.

1. LocalAuthGuard 구현

 
export class LocalAuthGuard extends AuthGuard('codefactory') {}
  • Passport의 인증 전략을 사용하는 AuthGuard를 상속.
  • ‘codefactory’는 우리가 정의한 커스텀 전략 이름입니다.
  • 해당 Guard는 컨트롤러에서 라우트 접근을 제어하는 데 사용됩니다.

2. LocalStrategy 클래스 정의

 
export class LocalStrategy extends PassportStrategy(Strategy, 'codefactory') {}
  • passport-local 전략을 기반으로 하며, email과 password를 입력받아 유저를 검증합니다.
  • validate() 메서드는 로그인 시도 시 호출되며, 실제 인증 로직은 authService.authenticate()를 통해 처리됩니다.
  • 이 전략은 Passport에서 사용자가 입력한 데이터를 바탕으로 유저 정보를 리턴하고, 이후 요청 객체(req.user)에 주입됩니다.

3. auth.service.ts의 인증 로직

 
async authenticate(email: string, password: string) { ... }
  • 유저 정보를 DB에서 조회 후, bcrypt를 이용해 패스워드를 검증합니다.
  • 실패 시 적절한 예외를 반환하고, 성공 시 유저 객체를 반환합니다.

4. JWT 기반 로그인 구현

 
async login(rawToken: string) { ... }
  • 로그인 요청 시 Authorization 헤더의 basic token을 파싱하여 로그인 정보를 추출합니다.
  • accessToken과 refreshToken을 각각 별도의 시크릿키와 유효기간으로 발급합니다.
  • JWT를 통해 추후 인증을 처리할 수 있는 기반을 마련합니다.

✍️ 실습 후기 및 느낀 점

이번 실습을 통해 NestJS와 Passport를 활용한 인증 시스템의 핵심 구조를 처음부터 끝까지 구현해볼 수 있었습니다. 특히, 로컬 전략을 커스터마이징하고 Guard를 적용하여 인증 흐름을 제어하는 방법은 실무에서도 빈번하게 사용되는 중요한 패턴입니다.

처음에는 PassportStrategy를 확장하는 방식이나 Guard를 통한 전략 지정 방식이 다소 낯설게 느껴졌지만, 직접 코드를 작성하고 흐름을 따라가 보면서 **"전략 -> 인증 -> 토큰 발급 -> 요청 흐름에 유저 정보 주입"**이라는 전반적인 구조가 머릿속에 그려졌습니다.

또한, auth.service.ts의 login() 함수에서 JWT 토큰을 발급하는 과정을 통해 NestJS에서의 인증 방식이 얼마나 유연하면서도 강력하게 구성될 수 있는지를 실감할 수 있었습니다. access token과 refresh token을 분리하여 관리함으로써 보안성 또한 강화할 수 있다는 점이 인상 깊었습니다.

무엇보다도 이번 실습의 가장 큰 수확은, NestJS의 미들웨어 구조 속에서 Passport를 어떻게 적절하게 통합할 수 있는지, 그리고 이를 통해 인증과 인가를 체계적으로 설계할 수 있는 기초를 다졌다는 것입니다.

 

 

사진

시작
종료
수강클립
결과물