여러 프론트엔드로 로그인 리다이렉트 시켜주기 :OAuth Origin 화이트리스트 설계
로컬 프론트와 배포된 프론트가 동시에 같은 dev 백엔드로 로그인해야 할 때, 고정된 리다이렉트 URI 하나로는 안 되는 이유와 origin 화이트리스트 + state 검증으로 풀어낸 구조
카카오/구글 로그인이 dev에서만 자꾸 깨졌던 이유: OAuth2 콜백 트러블슈팅 3연전
STATELESS 세션과 충돌한 401, GCP Secret 공백 하나 때문에 난 KOE010, 크로스 도메인 쿠키/CSRF까지 — 이틀에 걸쳐 이어진 세 가지 원인을 순서대로 추적한 기록
OpenAPI/Swagger 보안 스키마, 전역 설정 vs 개별 어노테이션
JWT 인증 API를 Swagger로 문서화할 때 보안 스키마를 전역으로 걸지 개별로 걸지, 그리고 AI 코드 리뷰 제안을 검증 없이 반영하면 안 되는 이유
로그아웃 하나 만드는데 왜 Redis가 필요했을까? 토큰 블랙리스트 저장소 결정
JWT는 stateless라 로그아웃해도 만료 전까지 유효한 문제를 어떻게 풀지, Redis와 Postgres 사이에서 고민하고 실제로 인프라를 도입한 과정
OAuth2 로그인 토큰, 쿼리스트링에서 안전한 쿠키로 옮기기까지
JWT를 쿼리스트링으로 넘기던 로그인을 HttpOnly 쿠키로 바꾸고, Secure/SameSite 정책을 정하고, CSRF 방어까지 붙이기까지 3단계 보안 강화 기록
동시에 처음 로그인하면 터지는 UNIQUE 제약 위반, REQUIRES_NEW로 잡기
소셜 로그인 최초 가입 시 동시 요청이 겹치면 발생하는 UNIQUE 제약 위반 레이스 컨디션을, 별도 트랜잭션 재시도로 해결한 기록
카카오 로그인에서 만난 PKCE 오류, client_secret_post로 해결하기
Spring Security 7.x가 자동으로 켜는 PKCE를 카카오가 지원하지 않아 터진 로그인 실패와, 백엔드 서버 구조에서 PKCE를 꺼도 안전한 이유
Spring Security - JWT, OAuth
세션 vs 토큰 인증 방식 비교, JWT 구조 & 커스텀 필터 구현, @AuthenticationPrincipal 활용, 카카오 OAuth 소셜 로그인까지
Spring Security - Security 구조, 폼 로그인
스프링 시큐리티의 인증/인가 구조, 주요 객체 역할, Filter Chain 동작 방식, 폼 로그인 구현, 인증 실패 응답 통일까지
페이지네이션 & 검증 어노테이션
대량 데이터 조회 시 Page(오프셋)와 Slice(커서) 로 페이지네이션을 구현하고, 검증 어노테이션(@NotNull 등) + @Valid로 잘못된 요청을 Controller 단에서 미리 걸러낸다.
JPA & ORM
Java(객체)와 MySQL(테이블)의 패러다임 불일치를 해결하기 위해 JPA/ORM을 사용하며, 영속성 컨텍스트(1차 캐시·변경감지·쓰기지연)가 그 핵심 동작 원리다.