인증 서비스 유형
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 백엔드 개발자(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 로그인 흐름:
- 사용자 Google 로그인 버튼 클릭 → Google 인증 요청
- Google에서
Access Token
+ 사용자 프로필 반환 - NestJS 서버에서 사용자 생성 또는 조회 후 내부
JWT
/세션 발급
- 라이브러리:
passport-google-oauth20
사용 - 보안: 외부 제공자 신뢰, 내부 인증 토큰 보안 관리
결론
- 인증 전략 선택: SSR 앱 → Session-based
, 무상태 앱 → JWT
, 사용자 편의성 → OAuth2
- 보안 실천: HTTPS
강제, CSRF
방어, Refresh Token
보안 관리, JWT
서명 강화
- 기술 스택: NestJS(백엔드) + Next.js(프론트엔드) + Redis(세션 저장) + OAuth2 제공자 연동 필수