Skip to content

[5주차] 김은서 / [feat] 이메일 로그인 및 인증/인가 로직 구현 #99

Description

@eun-seoo

1. 무엇을?

이메일 로그인 기능과 Spring Security를 이용한 JWT 기반 인증/인가 로직을 구현합니다.
기존에는 세션(Session) 방식을 고려했지만,
최종적으로 토큰(JWT) 방식을 선택하여 클라이언트 중심의 인증 구조로 설계합니다.

2. 상세 설명

기능 개요

  • 사용자는 이메일과 비밀번호를 통해 로그인할 수 있습니다.
  • 로그인 성공 시 서버는 Access Token을 발급하여 응답합니다.
  • 이후 클라이언트는 모든 요청에 Authorization: Bearer 형태로 토큰을 전송합니다.
  • 서버는 토큰을 검증하고, 인증 정보(Authentication)를 SecurityContextHolder에 저장해 인가 처리를 수행합니다.

JWT선택 배경

초기에 Spring Security의 기본 세션 인증 방식을 고려했으나,
클라이언트-서버 간 상태 유지(Session Storage) 필요성과 확장성 문제로 인해 Stateless한 JWT 방식으로 전환했습니다.

JWT 구조

  • Header: 알고리즘 및 타입 (HS256, JWT)
  • Payload: 이메일(식별자), 발급 시간, 만료 시간
  • Signature: 비밀 키 기반 서명 검증
    → 토큰 위조나 변조 시 즉시 차단 가능

적용 범위

  • /auth/signup: 회원가입 (토큰 불필요)
  • /login: 이메일 로그인 (Access Token 발급)
  • /posts, /comments 등 이후 API: Access Token 검증을 통한 접근 제어

3. 추가 사항

현재는 Access Token만 발급하지만, 다음 주차 과제에서 Refresh Token 및 카카오 로그인(oAuth)을 추가할 예정입니다.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions