'백엔드 개발/인증 · 보안' 카테고리의 글 목록
게으른 개발자
백엔드 개발/인증 · 보안
"JWT만으로 충분할까?" 인증 설계에서 마주한 3가지 트레이드오프
2025.05.03
웹 서비스에서 “로그인 기능”은 단순히 이메일과 비밀번호를 검사하는 것을 넘어서,보안, 확장성, 사용자 경험 사이에서 끊임없이 선택해야 하는 설계의 연속입니다.이번 글에서는 제가 직접 만든 auth-service를 개발하면서 마주한 설계 트레이드오프(Trade-off)에 대해 공유합니다.1. JWT vs Session – Stateless와 제어 가능성 사이의 균형초기 인증 구조를 설계할 때 가장 먼저 고민한 건 AccessToken을 Stateless하게 유지할 것인지,아니면 서버 측에서 세션을 관리할 것인지였습니다.JWT만 사용하는 구조는 서버가 상태를 저장하지 않아 API 확장성과 배포 편의성이 뛰어납니다.하지만 토큰이 유출되었을 때 로그아웃하거나 무효화하기가 어렵다는 보안적 단점이 있습니다.반대로..
백엔드 개발/인증 · 보안
Refresh Token 탈취를 막기 위한 보안 설계: Redis TTL, Rotation, userAgent 바인딩까지
2025.05.03
실서비스 기준: Redis + 세션 + RefreshToken 구조를 도입한 이유1. 도입 배경사용자가 로그인한 이후에도 안정적으로 인증 상태를 유지하면서도, 보안 문제 없이 동작하는 시스템이 필요했습니다.특히 아래 같은 문제들을 해결해야 했습니다.동일 사용자의 중복 로그인 문제Refresh Token 탈취 시 악용 가능성사용자 세션 만료 시 적절한 UX 대응로그아웃 시 세션 정리 누락으로 인한 보안 리스크그래서, 아래와 같은 구조로 시스템을 설계하게 되었습니다.2. Redis 기반 세션 저장소를 선택한 이유선택 이유인메모리 기반으로 세션 TTL 만료에 적합수만 명의 세션 데이터를 빠르게 읽고 쓸 수 있음세션 로그아웃, 자동 만료 등을 중앙 집중형으로 제어내가 정의한 기본 구조Key: session:us..
백엔드 개발/인증 · 보안
Refresh Token Rotation이란? JWT 보안 강화를 위한 필수 전략
2025.04.27
Refresh Token Rotation 정리Refresh Token Rotation이란?Refresh Token Rotation은기존의 Refresh Token을 사용할 때마다 새로운 Refresh Token을 발급하고, 이전 토큰은 즉시 폐기하는 보안 기법입니다.JWT 기반 인증 시스템에서는 Refresh Token이 탈취될 경우 심각한 보안 문제가 발생할 수 있는데,Rotation을 적용하면 토큰이 탈취되어도 한 번 사용된 토큰은 무효화되기 때문에 피해를 최소화할 수 있습니다.왜 필요한가?Refresh Token 탈취 방지사용된 토큰은 즉시 무효 처리되기 때문에, 중간에 탈취되더라도 재사용이 불가능합니다.세션 보안 강화세션 하이재킹(Session Hijacking) 공격을 효과적으로 차단할 수 있습..
백엔드 개발/인증 · 보안
개인정보 수집 동의는 왜 받아야 할까? 법적 의무부터 실무 처리까지 정리
2025.04.24
개인정보 수집 동의는 반드시 받아야 합니다, 특히 한국과 같은 개인정보 보호 법령이 강력한 나라에서는 더더욱 그렇습니다.결론 먼저개인정보 수집·이용 동의는 법적으로 의무이며, 이를 받지 않고는 개인 정보를 수집하거나 처리할 수 없습니다.왜 반드시 동의를 받아야 하나요?1. 「개인정보 보호법」 제15조 및 제17조에 의한 법적 근거조항내용제15조(개인정보의 수집·이용)정보주체의 동의 없이 개인정보를 수집·이용할 수 없다제17조(개인정보의 제공)제3자에게 제공할 경우 사전 동의를 반드시 받아야 한다즉, 이메일, 이름, 전화번호, 주소 등 "개인"을 식별할 수 있는 모든 정보"는 수집 전에 명확한 동의가 있어야 합니다.2. 위반 시 벌칙 및 손해배상 책임 발생동의 없이 정보 수집 → 행정 처분, 과태료 부과,..
백엔드 개발/인증 · 보안
인증과 인가, 그리고 JWT까지 완벽 정리
2024.01.02
인증(Authentication)과 인가(Authorization), 그리고 JWT인증(Authentication) vs 인가(Authorization)인증: 사용자가 자신이 누구인지 증명하는 과정→ 예: 아이디와 비밀번호 입력 후 로그인인가: 인증된 사용자가 특정 자원에 접근 가능한지 판단하는 과정→ 예: 일반 사용자가 관리자 페이지 접근 시 거부되는 것인가는 역할(Role)과 권한(Permission)을 기준으로 관리됨왜 인증 방식이 필요한가?HTTP의 특성: 비연결성(Connectionless) + 무상태성(Stateless)각 요청은 독립적으로 처리되며 서버는 이전 요청의 상태를 기억하지 않음사용자의 로그인 상태 유지를 위해 인증 방식이 필요인증 방식 요약: 세션, 쿠키, JWT1. Session..