웹 개발/Spring 3

Spring Security - JWT 인증 흐름과 @AuthenticationPrincipal, 토큰 응답 처리 정리

1. JWT 인증과 @AuthenticationPrincipal 관계 정리항목 타입 설명JWT 토큰String예: "Bearer xxx.yyy.zzz" 형식. 클라이언트 → 서버 전달용@RequestHeaderString요청 헤더에서 토큰 직접 추출. 인증 필터에서 사용됨@AuthenticationPrincipalUserDetails 또는 CustomUserDetails필터에서 토큰을 검증한 후 생성한 사용자 정보 객체결론:@AuthenticationPrincipal은 "JWT 토큰"이 아닌, 토큰으로 인증한 사용자 객체를 받는 것이므로, 참조 자료형(CustomUserDetails 등) 사용하는 게 맞음.왜 Security Filter Chain을 꼭 거쳐야 할까?Spring Security의 기본 인..

웹 개발/Spring 2025.04.26

Spring Security 인가 DSL 메서드 정리

메서드 분류 설명 핵심 차이permitAll()인가 DSL (Authorization DSL)인증 여부와 무관하게 모든 사용자에게 접근 허용토큰 없어도 허용, 로그인/회원가입 등 공개 API에 사용authenticated()인가 DSL인증된 사용자만 접근 가능큰 있어야 허용, 로그인 이후 사용자 전용 APIhasRole("ADMIN")인가 DSLROLE_ADMIN 역할을 가진 사용자만 접근 가능인증 + "역할" 기반 제한hasAuthority("ROLE_ADMIN")인가 DSLROLE_ADMIN 권한을 가진 사용자만 접근 가능인증 + "권한" 문자열 기반 제한, hasRole보다 더 유연함denyAll()인가 DSL모든 사용자 접근 차단, 주로 테스트나 임시 비활성화용항상 차단됨, 모든 접근 불가

웹 개발/Spring 2025.04.25

Spring security 패턴 매칭 기호(프론트, 백 HTTP통신시 중요)

Spring Security의 패턴 매칭 기호패턴 의미 예시 매칭 대상*한 경로 조각 (슬래시 / 사이 한 개)/api/*/api/test, /api/1**모든 경로(하위 디렉토리 포함)/api/**/api/test, /api/a/b/c?한 글자/api/t?st/api/test, /api/tast예시1. * 하나 (한 계층)/api/* → 매칭 대상:/api/hello ✅/api/hello/world ❌ (계층이 2단계라 안됨)2. ** 두 개 (모든 하위 경로)/api/** → 매칭 대상:/api/hello ✅/api/hello/world ✅/api/1/2/3 ✅**는 현재 경로 이후 모든 경로까지 포함하는 와일드카드야.TIP*는 /를 포함하지 않는 단일 경로 조각 하나**는 디렉토리 전체 하위 포함실..

웹 개발/Spring 2025.04.23