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

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

by 논문보관함 2025. 4. 20.

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

https://bit.ly/4hTSJNB

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr

0420 일

학습 내용 정리

02.캐시로 토큰 블락하기

auth.controller.ts

  @Post('token/block')
  blockToken(
    @Body('token')  token: string,

  ){
    return this.authService.tokenBlock(token);
  }
 

 

auth.service.ts

    async tokenBlock(token: string){
        const payload = this.jwtService.decode(token);
       

        const expiryDate = +new Date(payload['exp'] * 1000);
        const now = +Date.now();

        const differenceInSeconds = (expiryDate - now) / 1000;

        await this.cacheManager.set(`BLOCK_TOKEN_${token}`, payload,
            Math.max(differenceInSeconds * 1000, 1)
        )
        return true;
    }

bearer-token.middleware.ts

        const blockedToken = await this.cacheManager.get(`BLOCK_TOKEN_${token}`);

        if(blockedToken){
            throw new UnauthorizedException('차단된 토큰입니다.');
        }

 

수강후기

오늘 수업에서는 JWT 토큰을 블락 처리하여 인증의 유연성과 보안성을 동시에 확보하는 방법을 실습을 통해 배웠습니다. 특히, 토큰 자체를 서버 단에서 무효화할 수 있는 방법으로 캐시를 활용한 차단 방식은 실제 서비스에서 로그아웃 처리나 관리자에 의한 강제 로그아웃, 혹은 비정상적인 접근 차단 등에 매우 실용적인 방법이라는 점에서 인상 깊었습니다.

기존 JWT의 단점은 발급 이후 서버에서 강제적으로 토큰을 무효화하기 어렵다는 점이었습니다. 하지만 캐시(Cache Manager)를 활용하면 토큰의 만료 시간을 기준으로 블랙리스트 등록이 가능하고, 해당 토큰이 클라이언트에서 계속 사용될 경우 이를 차단할 수 있다는 것을 이번 실습을 통해 알게 되었습니다. 또한 토큰의 exp(만료 시간)를 활용하여 블락 유지 시간을 설정하는 방식은 효율적이며, 만약 토큰이 만료되지 않았다 하더라도 캐시 블럭을 통해 인증 흐름을 제어할 수 있어 매우 유용한 전략이라는 것을 체감했습니다.

실습을 통해 컨트롤러 단에서 토큰을 블락하는 API를 만들고, 서비스 단에서는 JWT 디코딩을 통해 만료 시간을 추출한 뒤, 이를 기반으로 TTL을 설정하여 캐시에 저장하는 흐름을 구현했습니다. 미들웨어에서는 요청 헤더에 담긴 토큰이 블락 리스트에 포함되어 있는지 확인한 후, 차단된 토큰일 경우 예외를 발생시키는 구조로 되어 있어, 인증 전처리 단계에서 효율적으로 필터링이 가능하다는 점이 확실히 이해되었습니다.

또한 이번 실습을 통해 NestJS에서 미들웨어와 캐시 매니저를 실제로 연결하고, JWT 인증 흐름과 잘 결합하는 방식에 대한 감을 익힐 수 있었습니다. 단순히 기능 구현을 넘어서, 인증 시스템에서의 토큰 관리 전략에 대해 실제 운영 환경에서 고려해야 할 포인트를 배운 시간이었다고 생각합니다.

총정리하자면, 오늘의 학습을 통해 JWT 기반 인증 시스템에서 **"즉시 무효화할 수 있는 유연성"**을 확보하는 방법을 명확히 배울 수 있었고, 캐시를 활용한 인증 보완 기법의 중요성을 실감했습니다. 앞으로 실무에서 로그아웃 처리나 보안 관련 기능을 구현할 때 매우 유용하게 활용할 수 있을 것 같습니다.

사진

시작/종료
수강클립/결과물