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

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

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

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

https://bit.ly/4hTSJNB

 

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

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

fastcampus.co.kr

0328 금

학습 내용 정리

nestjs

JwtStrategy 적용

 

학습후기

🧠 학습 내용 정리: NestJS - JWT 인증 전략(JwtStrategy)

이번 실습에서는 Passport의 jwt 전략을 사용하여 JWT 토큰 기반의 인증 시스템을 NestJS에 적용하였습니다. 일반적인 로그인 시스템 이후 사용자 인증을 위한 핵심 로직을 구현하며, 실무에서도 가장 널리 쓰이는 토큰 기반 인증 방식에 대한 실질적인 이해를 쌓을 수 있는 시간이었다고 생각합니다.


🔐 jwt.strategy.ts 분석

ts
복사편집
export class JwtAuthGuard extends AuthGuard('jwt'){}
  • NestJS의 AuthGuard를 상속받아 'jwt' 전략을 사용하는 커스텀 가드를 정의했습니다.
  • 이 가드는 보호가 필요한 라우터에 붙여 사용합니다.
ts
복사편집
@Injectable() export class JwtStrategy extends PassportStrategy(Strategy){ ... }
  • passport-jwt의 Strategy를 상속하여 JWT 인증 전략을 구성합니다.

주요 구성 요소:

  • jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken()
    → Authorization 헤더에서 Bearer 토큰을 추출
  • ignoreExpiration: false
    → 토큰의 만료 여부를 무시하지 않도록 설정
  • secretOrKey
    → 토큰 서명을 검증할 때 사용할 시크릿 키
ts
복사편집
validate(payload: any){ return payload; }
  • 이 메서드는 JWT의 payload를 검증 후, NestJS의 request.user에 해당 값을 주입합니다.

🔁 auth.service.ts의 토큰 발급 로직

ts
복사편집
async issueToken(user: User, isRefreshToken: boolean)
  • User 정보를 바탕으로 JWT 토큰을 생성합니다.
  • isRefreshToken에 따라 두 종류의 토큰(access / refresh)을 발급합니다.

주요 로직:

  • accessToken
    • 짧은 유효기간(300초)
    • 인증된 사용자임을 나타냄
  • refreshToken
    • 긴 유효기간(24시간)
    • accessToken이 만료되었을 때 재발급용

✍️ 수강 후기

오늘 실습은 JWT 기반의 인증 시스템을 실제로 구현하면서, NestJS에서 Passport와 JWT를 어떻게 통합하는지 체계적으로 학습할 수 있었던 시간이었습니다. 그동안 개념적으로만 이해하고 있던 토큰 기반 인증의 흐름을 직접 구현하고 테스트하면서, JWT의 작동 원리를 구체적으로 체득할 수 있었습니다.

특히 다음과 같은 부분이 인상 깊었습니다:

✅ NestJS + Passport 통합 구조의 우수성

NestJS는 Passport와의 통합을 통해 매우 유연한 인증 구조를 제공합니다. Strategy를 독립적으로 분리할 수 있어서 코드의 응집도는 높이고, 재사용성과 유지보수성을 확보할 수 있다는 점이 매우 좋았습니다.

✅ 실용적인 JWT 전략 구현

  • Bearer Token 추출 방식,
  • 만료 시간 설정,
  • Access / Refresh Token 분리 발급

과 같은 설정을 통해 실무에서 흔히 사용되는 인증 시나리오를 직접 구현해볼 수 있었던 것이 큰 성과였습니다.

✅ 토큰 검증 및 사용자 주입 흐름 이해

JWT를 통해 payload가 검증되면 자동으로 req.user에 주입되는 흐름을 체험하면서, NestJS의 미들웨어 기반 구조가 얼마나 효율적인지 느낄 수 있었습니다.


💡 앞으로의 적용 방향 및 다짐

이번 실습을 기반으로, 다음과 같은 심화 주제를 탐색하고 싶습니다:

  1. Access Token 만료 시 Refresh Token을 통한 재발급 흐름 구현
  2. 토큰 탈취 방지를 위한 보안 강화 기법 (IP / User-Agent 검증 등)
  3. 로그아웃 및 토큰 무효화 전략 (블랙리스트 캐싱 등)
  4. Role 기반 접근 제어 및 RBAC 적용

이번 실습은 단순한 인증을 넘어서, 보안성과 확장성을 고려한 인증 시스템 설계의 첫 걸음을 내딛는 경험이었습니다. NestJS의 구조적 강점과 Passport 전략의 조합을 기반으로, 앞으로 더 견고하고 실용적인 백엔드 시스템을 설계해 나갈 자신감이 생겼습니다.

사진

시작
종료
수강클립
결과물