[Practice-3] Spring Data: Enum 고도화
·
Spring/JPA
1. 들아가며이커머스 프로젝트에서 상품의 카테고리(Category)처럼 정해진 기준값을 다룰 때 Enum은 필수적이다. 하지만 실무에서는 단순히 값을 나열하는 것만으로는 부족한 경우가 많다. 이번 글에서는 '패션', '전자기기'와 같은 카테고리를 예시로, 기존의 단순한 Enum 사용법의 한계와 이를 필드와 생성자를 활용해 개선하는 방법을 정리해 본다.2. 기존 방식: 단순 나열2.1. 예시코드가장 흔하게, 그리고 처음에 쉽게 작성하는 방식이다. 단순히 상수의 이름만 정의한다.public enum Category { FASHION, ELECTRONICS, FOOD}2.2. 문제점DB에 저장할 때는 문제가 없지만, 화면에 보여줄 때 문제가 발생한다. 사용자에게 "FASHION"이라는 영어 ..
[11] Spring Security OAuth2: Sequence Diagram
·
Spring/Security
[10] Spring Security OAuth2: 인증 성공 핸들러(SuccessHandler)와 JWT 발급
·
Spring/Security
GitHub - HeoJunHyoung/bytemallContribute to HeoJunHyoung/bytemall development by creating an account on GitHub.github.com1. 들어가며 지난 포스팅에서는 CustomOAuth2UserService를 통해 소셜 로그인 후 사용자 정보를 DB에 저장하고, 인증 객체(AuthMember)를 생성하는 과정까지 구현했다. 하지만 이것만으로는 로그인이 완료된 것이 아니다. 우리 시스템은 Stateless한 JWT 인증 방식을 사용하므로, 소셜 인증이 성공한 직후 클라이언트(프론트엔드)에게 Access Token과 Refresh Token을 발급해주어야 한다. 이 역할을 담당하는 것이 바로 AuthenticationSuc..
[9] Spring Security OAuth2: 도메인 확장과 CustomOAuth2UserService 구현
·
Spring/Security
GitHub - HeoJunHyoung/bytemallContribute to HeoJunHyoung/bytemall development by creating an account on GitHub.github.com1. 들어가며지난 포스팅에서는 각기 다른 소셜 프로바이더(Google, Kakao)의 응답을 OAuth2UserInfo 인터페이스로 표준화하는 작업을 수행했다. 이번 단계에서는 이 표준화된 데이터를 바탕으로 실제 우리 서비스의 DB에 회원을 저장하고, Spring Security가 인식할 수 있는 인증 객체(Principal)를 생성하는 핵심 비즈니스 로직을 구현한다. 이 과정은 크게 세 부분으로 나뉜다.소셜 정보를 담을 수 있도록 Entity 확장일반 로그인과 소셜 로그인을 모두 아우르는 ..
[8] Spring Security OAuth2: 사용자 정보 추상화와 팩토리 패턴 구현
·
Spring/Security
GitHub - HeoJunHyoung/bytemallContribute to HeoJunHyoung/bytemall development by creating an account on GitHub.github.com1. 들어가며지난 포스팅에서는 OAuth2 클라이언트 의존성을 추가하고 프로바이더(Google, Kakao) 설정을 마쳤다. 이번 단계에서는 각 소셜 서비스마다 상이한 응답 데이터를 일관된 형태로 처리하기 위한 사용자 정보 추상화와 팩토리 패턴(Factory Pattern) 구현을 다룬다.2. 문제 상황: 파편화된 응답 데이터OAuth2 표준은 인증 흐름을 정의하지만, 사용자 정보(User Info)의 JSON 응답 구조까지 엄격하게 통일하지는 않았다.Google: sub (고유 ID), e..
[7] Spring Security OAuth2: 의존성 설정 및 소셜 프로바이더 준비
·
Spring/Security
GitHub - HeoJunHyoung/bytemallContribute to HeoJunHyoung/bytemall development by creating an account on GitHub.github.com1. 들어가며지난 포스팅까지 로컬(Local) 기반의 인증 시스템과 JWT 발급 과정을 완성했다. 이제 서비스 확장을 위해 OAuth 2.0 기반의 소셜 로그인(Google, Kakao 등)을 기존 시스템에 통합하는 과정을 시작한다. 이번 글에서는 그 첫 단계로 필수 라이브러리 추가와 프로바이더 설정을 다룬다.2. OAuth2 Client 의존성 추가Spring Security는 OAuth 2.0 인증을 간편하게 구현할 수 있도록 별도의 스타터 패키지를 제공한다. build.gradle 파일..
[6] Spring Security Local: Sequence Diagram
·
Spring/Security
GitHub - HeoJunHyoung/bytemallContribute to HeoJunHyoung/bytemall development by creating an account on GitHub.github.com 1. 로그인 플로우 2. 인증 필터 플로우 3. 재발급 플로우
[5] Spring Security Local: 로컬 로그인과 토큰 재발급
·
Spring/Security
GitHub - HeoJunHyoung/bytemallContribute to HeoJunHyoung/bytemall development by creating an account on GitHub.github.com 1. 들어가며이전 포스팅까지 우리는 JWT를 발급하는 Provider와 요청을 검증하는 Filter를 구현하여 인증 시스템의 기반을 다졌다. 이제 이 도구들을 활용하여 실제 사용자가 회원가입을 하고, 로그인을 통해 토큰을 발급받는 비즈니스 로직(Service, Controller)을 완성할 차례다.이번 포스팅의 핵심은 두 가지다.명시적 인증: AuthService에서 AuthenticationManager를 직접 호출하여 로그인을 처리한다.RTR (Refresh Token Rotation)..