JWT 3

동일 계정의 타 환경 중복 로그인 제한하기(Jwt + Redis 그리고 다중 탭 고려)

동일한 계정이 여러 환경에서 중복 로그인이 되는 상황을 제어해야 하는 요구사항이 있어 적용해봤다.일반적인 로그인 성공/실패 처리가 아니라, 이미 로그인된 계정이 다시 로그인할 경우 어떤 상황을 '중복'으로 볼지(탭/브라우저/기기), 무엇을 기준으로 판단할지, 그리고 어떤 방식으로 이전 로그인 상태를 정리할지까지 정책과 구현을 함께 결정해야 했다.동시 로그인 제어 기능을 붙이면서 마주한 JWT의 한계핵심은 단순 인증이 아니라 "현재 이 계정이 로그인 중인가?"를 서버가 판단할 수 있어야 했다.JWT 기반 인증은 일반적으로 AccessToken으로 매 API요청을 인증하고, 토큰의 서명과 만료 시간을 검증하는 구조이다. 그니까 원래 토큰 인증이라고 하면 Stateless라고 해서 "서버가 세션 상태를 안 들..

Web Security 2026.01.02

SecurityFilterChain에서 permitAll() 오해와 Authorization 헤더/JWT 검증

내가 열심히 만든 코드도 1달만 지나도 기억이 나지 않음을 자책하면서 정리해놔야겠다는 생각이 드는 요즘..😣 인증 토큰 없이도 실행(로그인 이전에서의 접근 허용)되어야 하는 일명 '공개 API'가특정 상황에서 실행되지 않는 문제가 발생했다.Security 설정을 두 개의 SecurityFilterChain으로 나눠 사용하다가,문제 해결을 위해 단일 체인 구조로 변경했고,그 과정에서 예상하지 못했던 또 다른 문제를 겪게 되어, 그 원인과 해결 과정을 정리해 보려고 한다.SecurityFilterChain을 두 개로 나누어 사용했을 때의 문제점서비스는 인증 수단으로 JWT를 사용하고 있었고, 토큰 없이도 호출되어야 하는 "공개 API"와 인증을 거쳐야만 실행 가능한 "보호 API"가 공존하는 구조였다. 그..

Web Security 2025.12.29

세션, 토큰, 쿠키, 캐시 비교 정리

세션(Session), 토큰(Token), 쿠키(Cookie), 캐시(Cache)에 대해 비교 정리해보겠습니다. 세션(Session)과 토큰(Token) 정리위 두 용어는 인증정보가 저장되는 위치에 따라 구분되는 용어이다.다시 말해, 인증 상태를 어디에 저장하느냐를 기준으로 '세션' 또는 '토큰' 기반의 인증 방식으로 나뉜다. 1. 세션(Session)인증 정보를 서버에 저장하는 방식이다. 로그인 등의 경우 서버는 세션이 없으면 자동으로 세션을 새로 생성하는데, 이와 함께 고유한 키 역할을 하는 Session ID도 생성한다. 그리고 Set-Cookie 헤더를 통해 JSESSIONID를 클라이언트에게 응답하게 된다.Set-Cookie: JSESSIONID=Session ID값※ Set-Cookie : 브..

Web Security 2025.06.25
반응형