인증 서비스 유형 14가지 - NestJS & Next.js 아키텍처
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

인증 서비스 유형

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

- 백엔드 개발자(NestJS 사용자) 및 프론트엔드 개발자(Next.js 사용자)

- 난이도: 중급~고급(인증 구현, 보안 패턴 이해 필요)

핵심 요약

  • 인증 서비스 유형: Session-based, JWT, OAuth2, mTLS, Magic Link 등 14가지 전략과 사용 사례 정리
  • NestJS + Next.js 인증 아키텍처:

- Session-based: Redis 기반 세션 저장, express-session + connect-redis 사용

- JWT: @nestjs/jwt + passport-jwt 사용, Access Token + Refresh Token 분리

- OAuth2: Google 등 외부 제공자 연동, passport-google-oauth20 사용

  • 보안 고려사항: HttpOnly 쿠키, CSRF 방어, HTTPS 강제, Refresh Token 보안 관리

섹션별 세부 요약

1. 인증 서비스 유형 및 사용 사례

  • Session-based Auth: 서버와 클라이언트에 세션 ID 저장, 클래식 웹 앱(Express, Rails) 사용
  • JWT: 무상태 인증, Authorization 헤더에 전달, 현대 SPAs 및 모바일 앱 사용
  • OAuth2: Google, Facebook 등 외부 제공자 인증, "Login with Google" 사용
  • mTLS: 고보안 기업 API에서 클라이언트/서버 인증
  • Magic Link: 이메일로 전송된 일회용 링크 사용, 패스워드 없는 로그인

2. 인증 데이터 저장 위치 및 고려 사항

  • HTTP-Only Cookies: 세션 기반 인증에 안전, JS 접근 불가
  • LocalStorage: JWT 저장 시 XSS 취약점 유발
  • Redis/DB 세션 저장: 세션 지속성 및 확장성 확보
  • Refresh Token: JWT와 함께 사용, 로그아웃 없이 토큰 갱신 가능

3. 인증 구현 패턴: Session-based

  • NestJS 설정: express-session + connect-redis 사용, RedisStore 설정
  • LocalStrategy: passport-local 사용, validateUser 메서드 구현
  • Next.js 클라이언트: fetch 요청 시 credentials: 'include' 설정 필요
  • 보안 강화: secure: true 쿠키, .env + 비밀 관리 도구 사용

4. 인증 구현 패턴: JWT

  • JWT 생성: @nestjs/jwt 사용, Access Token (15분) + Refresh Token (7일) 분리
  • Refresh Token 저장: DB 또는 HttpOnly 쿠키 저장
  • 토큰 갱신: 401 에러 시 /auth/refresh 엔드포인트 호출
  • 보안 취약점: 토큰 유출 시 유출 방지, JWT 서명 강화 필요

5. 인증 구현 패턴: OAuth2

  • Google 로그인 흐름:
  1. 사용자 Google 로그인 버튼 클릭 → Google 인증 요청
  2. Google에서 Access Token + 사용자 프로필 반환
  3. NestJS 서버에서 사용자 생성 또는 조회 후 내부 JWT/세션 발급
  • 라이브러리: passport-google-oauth20 사용
  • 보안: 외부 제공자 신뢰, 내부 인증 토큰 보안 관리

결론

- 인증 전략 선택: SSR 앱 → Session-based, 무상태 앱 → JWT, 사용자 편의성 → OAuth2

- 보안 실천: HTTPS 강제, CSRF 방어, Refresh Token 보안 관리, JWT 서명 강화

- 기술 스택: NestJS(백엔드) + Next.js(프론트엔드) + Redis(세션 저장) + OAuth2 제공자 연동 필수