2025-08-12 NestJS 구글 소셜 로그인 & JWT 인증 시스템 구현

2025. 8. 12. 03:54·TIL

1. 오늘 한 것 (What I Did)

  • 구글 OAuth2 소셜 로그인 구현
  • JWT 토큰 발급 시스템 구현 (AccessToken + RefreshToken)
  • JWT 기반 API 보호 시스템 구현

구현한 파일들

src/
├── 00.auth/
│   ├── auth.service.ts       # JWT 토큰 발급
│   ├── auth.controller.ts    # 구글 로그인 API
│   ├── auth.module.ts        # 인증 모듈
│   ├── google.strategy.ts    # 구글 OAuth 전략
│   ├── google-auth.guard.ts  # 구글 인증 가드
│   └── jwt.strategy.ts       # JWT 검증 전략
├── 01.user/
│   ├── user.service.ts       # 사용자 DB 관리
│   ├── user.controller.ts    # 사용자 API
│   └── user.module.ts        # 사용자 모듈
└── 10.common/
    └── decorator/
        └── user.decorator.ts # @User() 데코레이터

테스트한 API들

  • GET /google/login - 구글 로그인 시작
  • GET /google/redirect - 로그인 후 JWT 토큰 발급
  • GET /user - JWT 인증 필요한 사용자 정보 조회
  • DELETE /user - JWT 인증 필요한 사용자 삭제

2. 새로 이해한 것 (What I Learned)

환경변수 보안 관리

  • .env에 민감한 정보 저장
  • process.env.GOOGLE_CLIENT_ID로 접근
  • Git에는 절대 올리면 안됨!

AccessToken vs RefreshToken 전략

  • AccessToken: 1일, 실제 API 호출용
  • RefreshToken: 7일, AccessToken 재발급용
  • 보안과 편의성의 균형!

Bearer Token 방식

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

3. 여전히 잘 모르겠는 부분 

Interface vs Class

  • Interface는 "계약서" - 어떤 정보가 있어야 하는지 정의
  • Class는 "실제 구현체" - 데이터와 기능을 모두 가짐

this의 진짜 의미

  • this.jwtService = "이 AuthService 인스턴스가 가진 jwtService"
  • 생성자에서 준비한 도구들을 메소드에서 사용하는 방식

OAuth2 플로우

  • 이건 시간 내서 한번 그려봐야할 듯...  

Strategy Pattern (전략 패턴)

  • GoogleStrategy: 구글 OAuth 인증 방법 정의
  • JwtStrategy: JWT 토큰 검증 방법 정의
  • 나중에 카카오, 네이버 로그인도 같은 패턴으로 추가 가능!

Guard Pattern (가드 패턴)

  • GoogleAuthGuard: 구글 인증 강제
  • AuthGuard('jwt'): JWT 토큰 검증 강제
  • API에 @UseGuards()만 붙이면 보안 적용

Dependency Injection (의존성 주입)

constructor(
  private readonly jwtService: JwtService,     // JWT 관련 기능
  private readonly userService: UserService,   // 사용자 DB 관리
) { }​

 

저작자표시 비영리 변경금지 (새창열림)
'TIL' 카테고리의 다른 글
  • 2025-08-19 React 공식 문서 - 상호작용 더하기
  • 2025-08-18 React 공식 문서 - UI 표현하기
  • 2025-08-11 NestJS API 테스트 및 문제 해결
  • 2025-08-10 NestJS UsersService CRUD 구현 및 DTO 작성
한비(BIBI)
한비(BIBI)
IT 업계에서 오랫동안 일 하고 싶습니다. 가능하다면 죽을 때까지 배우며 살고 싶습니다. 마케팅과 CX 분야에서 커리어를 쌓았습니다. 지금은 IT 업계에 더 깊이 있게 기여하고자 개발 공부를 하고 있습니다. 이 배움의 여정을 글로 남기고 싶어 블로그를 시작했습니다.
  • 한비(BIBI)
    0과 1로된 세상
    한비(BIBI)
  • 전체
    오늘
    어제
    • 분류 전체보기 (33)
      • 크래프톤 정글 (5)
      • Computer Science (10)
      • 읽고 쓰고 생각하기 (1)
      • 일하면서 배웁니다 (1)
      • TIL (15)
  • 링크

    • LinkedIn
    • Threads
    • Twitter
  • 인기 글

  • 태그

    정글후기
    gpt인프라
    컴퓨터과학입문
    데이터시각화
    나만무프로젝트
    크래프톤정글
    CPU스케줄링
    시스템설계
    운영체제구조
    뉴스피드시스템
  • hELLO· Designed By정상우.v4.10.4
한비(BIBI)
2025-08-12 NestJS 구글 소셜 로그인 & JWT 인증 시스템 구현
상단으로

티스토리툴바