[Spring] Spring Security 예외 처리
·
Framework/Spring
안녕하세요.앞선 세 글에서 Spring Security의 전체 구조(FilterChain), 인증(Authentication), 인가(Authorization)를 정리했습니다.이번 주제는 인증 실패(401)와 인가 실패(403)를 어떻게 일관된 JSON 응답으로 번역하는가 입니다.이번에도 설정 암기보다 "예외가 어디서 잡혀서 어디로 흐르는가" 에 집중합니다.흐름을 모르면 "왜 내 @RestControllerAdvice가 안 타지?" 에서 멈추기 때문입니다. 두 종류의 보안 예외먼저 구분해야 할 것은, 보안에서 던져지는 예외가 성격이 다른 두 계열이라는 점입니다.예외상태 코드의미AuthenticationException401 Unauthorized"당신이 누구인지 모르겠다" (인증 실패/누락) Acces..
[Spring] Spring Security 인가 처리
·
Framework/Spring
안녕하세요.앞선 두 글에서 Spring Security의 전체 구조(FilterChain)와 인증(Authentication) 처리 흐름을 정리했습니다.이번에는 인증의 자연스러운 짝인 인가(Authorization)를 다룹니다.1편에서 FilterSecurityInterceptor를 "URL 접근 권한을 최종 판단한다" 한 줄로만 넘겼는데, 이번 글에서 그 한 줄을 펼쳐봅니다.이번에도 설정 암기보다 "인가 결정이 내부적으로 어떻게 내려지는가" 에 초점을 맞춥니다. 인가는 어디서 일어나는가1편의 필터 실행 순서를 다시 떠올려 보면, 인가는 보안 필터 체인의 거의 마지막 단계에서 일어납니다.요청 ↓인증 필터들 (누구인지 확정) ↓... (익명/세션/예외 변환 필터) ↓인가 필터 (이 작업을 해도 되는..
[Spring] Spring Security 인증 처리
·
Framework/Spring
안녕하세요.오늘은 Spring Security의 인증(Authentication) 처리가 내부적으로 어떻게 동작하는지를 정리해보려고 합니다.특히 인증 흐름은 여러 컴포넌트가 위임 방식으로 협력하기 때문에, 어디서 무엇을 하는지 모르면 커스텀하기도 어렵습니다. Authentication 객체란Spring Security에서 "인증된 사용자"를 표현하는 핵심 인터페이스가 Authentication입니다.주요 필드는 다음과 같습니다.필드의미principal인증 주체 (보통 UserDetails)credentials자격 증명 (비밀번호, 토큰 등)authorities부여된 권한 목록authenticated인증 완료 여부 (true/false)details부가 정보 (요청 IP, 세션 ID 등)Authentic..
[Spring] Spring Security
·
Framework/Spring
안녕하세요.오늘은 Spring Security의 전체 개념과, 내부적으로 가장 핵심이 되는 FilterChain의 동작 원리를 정리해보려고 합니다.설정 코드보다 "어떻게 동작하는가" 에 초점을 맞춥니다. 동작 원리를 모르면 설정을 외워도 디버깅이 어렵기 때문입니다. 인증(Authentication)과 인가(Authorization)웹 애플리케이션의 보안은 결국 두 가지 질문에 답하는 일입니다.구분영문질문예시인증Authentication"당신은 누구입니까?"로그인인가Authorization"이 작업을 할 수 있습니까?"관리자 페이지 접근이 두 개념은 보안 처리의 출발점이지만, 이 글에서는 인증/인가 자체보다 "보안 처리가 요청 흐름 어디에 끼어드는가" 에 집중합니다. Spring Security 이전의..