Java/Spring
-
1️⃣ OAuth 2.0이란 무엇인가?OAuth 2.0은 권한 위임(Authorization) 프로토콜이다.즉, 🔐 사용자의 비밀번호를 공유하지 않고 🎫 Access Token 을 이용해 📡 다른 서버의 리소스(API) 에 접근하도록하는 표준이다. OAuth 2.0이 해결하는 문제예를 들어 어떤 사이트에서 이런 버튼을 본적 있을것이다. Google 로그인Kakao 로그인GitHub 로그인 이때 사용자는 아이디/비밀번호를 그 서비스에 직접 입력하지 않고외부 인증 서버가 대신 인증을 해준다. 즉 구조는 이렇게 된다.사용자 → 내 서비스 → Google 로그인 → Google 인증 → 내 서비스 내 서비스는 사용자의 비밀번호를 몰라도Google 이 인증한 사용자라는 것만 확인하면 된다. 👉 이것이 ..
Spring Security OAuth2.01️⃣ OAuth 2.0이란 무엇인가?OAuth 2.0은 권한 위임(Authorization) 프로토콜이다.즉, 🔐 사용자의 비밀번호를 공유하지 않고 🎫 Access Token 을 이용해 📡 다른 서버의 리소스(API) 에 접근하도록하는 표준이다. OAuth 2.0이 해결하는 문제예를 들어 어떤 사이트에서 이런 버튼을 본적 있을것이다. Google 로그인Kakao 로그인GitHub 로그인 이때 사용자는 아이디/비밀번호를 그 서비스에 직접 입력하지 않고외부 인증 서버가 대신 인증을 해준다. 즉 구조는 이렇게 된다.사용자 → 내 서비스 → Google 로그인 → Google 인증 → 내 서비스 내 서비스는 사용자의 비밀번호를 몰라도Google 이 인증한 사용자라는 것만 확인하면 된다. 👉 이것이 ..
2026.03.03 -
HandlerMethodArgumentResolver 란?컨트롤러 메서드의 파라미터를 직접 해석해서 객체로 만들어주는 확장 포인트 인터페이스다쉽게 말해, Spring MVC 에서 컨트롤러 메서드의 매개변수를 HTTP 요청에서 실제 인자 값으로변환하는 인터페이스이다. DispatcherServlet 이 HandlerMapping 에서 적절한 Mapping URL 을 찾아내고 HanlderAdapter 를 통해적절한 컨트롤러 메서드를 호출한다.여기서 컨트롤러 메서드를 호출하기 전 @RequestParam, @PathVariable, @RequestBody 등의 데이터들을가공하거나 커스터마이징할 때 사용한다. 1️⃣ 왜 필요한가? (사용 이유) @GetMapping("/users")public String ..
HandlerMethodArgumentResolver 란?HandlerMethodArgumentResolver 란?컨트롤러 메서드의 파라미터를 직접 해석해서 객체로 만들어주는 확장 포인트 인터페이스다쉽게 말해, Spring MVC 에서 컨트롤러 메서드의 매개변수를 HTTP 요청에서 실제 인자 값으로변환하는 인터페이스이다. DispatcherServlet 이 HandlerMapping 에서 적절한 Mapping URL 을 찾아내고 HanlderAdapter 를 통해적절한 컨트롤러 메서드를 호출한다.여기서 컨트롤러 메서드를 호출하기 전 @RequestParam, @PathVariable, @RequestBody 등의 데이터들을가공하거나 커스터마이징할 때 사용한다. 1️⃣ 왜 필요한가? (사용 이유) @GetMapping("/users")public String ..
2026.01.07 -
1️⃣ 람다식이란?JDK 1.8 부터 추가된 람다식(Lambda Expression)은 메서드를 하나의 식(Expression)으로 표현한것이다.람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있다.이러한 람다식은 메서드의 이름과 반환값을 제거할 수 있어 "익명함수" 라고도 한다. 기본 문법(매개변수) -> { 실행문 } 예시x -> x + 1(a, b) -> a + b() -> System.out.println("hello") ✔ 함수형 인터페이스(메서드가 1개인 인터페이스)를 구현할 때 사용✔ 함수형 인터페이스는 @FuntionalInterface 어노테이션을 사용한다. 2️⃣ Spring에서 람다식이 쓰이는 이유Spring 5 / Spring Boot 2 이후부터XML 설정 ❌익명 클래스 ❌람..
람다식이란?1️⃣ 람다식이란?JDK 1.8 부터 추가된 람다식(Lambda Expression)은 메서드를 하나의 식(Expression)으로 표현한것이다.람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있다.이러한 람다식은 메서드의 이름과 반환값을 제거할 수 있어 "익명함수" 라고도 한다. 기본 문법(매개변수) -> { 실행문 } 예시x -> x + 1(a, b) -> a + b() -> System.out.println("hello") ✔ 함수형 인터페이스(메서드가 1개인 인터페이스)를 구현할 때 사용✔ 함수형 인터페이스는 @FuntionalInterface 어노테이션을 사용한다. 2️⃣ Spring에서 람다식이 쓰이는 이유Spring 5 / Spring Boot 2 이후부터XML 설정 ❌익명 클래스 ❌람..
2026.01.05 -
1️⃣ HttpSession 이란?Servlet 컨테이너(Tomcat) 가 관리하는 서버 측 세션 객체클라이언트당 1개식별자는 JSESSIONID 쿠키Spring Security 는 필요할 때만 HttpSession 을 사용(기본 설정)보통 Spring Security 인증 성공 후 SecurityContextRepository 를 통해 인증정보를 저장한다. 2️⃣ HttpSession은 언제 생성될까?❌ 자동 생성되지 않는다HttpSession 은 요청이 왔다고 해서 무조건 생성되지 않는다.// HttpServletRequest requestrequest.getSession(false); // 세션 없으면 nullrequest.getSession(); // 없으면 생성 ✅ 생성되는 대표적인 경..
HttpSession 생명주기 (SecurityContextHolderFilter, HttpSessionSecurityContextRepository)1️⃣ HttpSession 이란?Servlet 컨테이너(Tomcat) 가 관리하는 서버 측 세션 객체클라이언트당 1개식별자는 JSESSIONID 쿠키Spring Security 는 필요할 때만 HttpSession 을 사용(기본 설정)보통 Spring Security 인증 성공 후 SecurityContextRepository 를 통해 인증정보를 저장한다. 2️⃣ HttpSession은 언제 생성될까?❌ 자동 생성되지 않는다HttpSession 은 요청이 왔다고 해서 무조건 생성되지 않는다.// HttpServletRequest requestrequest.getSession(false); // 세션 없으면 nullrequest.getSession(); // 없으면 생성 ✅ 생성되는 대표적인 경..
2025.12.31 -
SessionManagementFilter 는 로그인 인증 시점과 인증된 사용자의 재 요청일 경우 실행되는 필터이다. SessionManagementFilter 는 "세션 자체" 를 보고 인증 여부를 판단하지 않고, SecurityContext 안Authentication 인증 객체의 상태를 보고 판단한다. 1️⃣ 핵심 결론 한 줄 요약SessionManagementFilter 가 "인증된 세션인가?" 를 확인하는 방법은SecurityContextHolder.getContext().getAuthentication() 여기서 가져온 Authentication 이👉 null 이 아니고👉 isAuthenticated() == true👉 AnonymousAuthenticationToken 이 아님이면 인증..
SessionManagementFilter 는 매 요청마다 인증된 세션인지를 어떻게 판단하나? (Feat. SecurityContextHolderFilter)SessionManagementFilter 는 로그인 인증 시점과 인증된 사용자의 재 요청일 경우 실행되는 필터이다. SessionManagementFilter 는 "세션 자체" 를 보고 인증 여부를 판단하지 않고, SecurityContext 안Authentication 인증 객체의 상태를 보고 판단한다. 1️⃣ 핵심 결론 한 줄 요약SessionManagementFilter 가 "인증된 세션인가?" 를 확인하는 방법은SecurityContextHolder.getContext().getAuthentication() 여기서 가져온 Authentication 이👉 null 이 아니고👉 isAuthenticated() == true👉 AnonymousAuthenticationToken 이 아님이면 인증..
2025.12.17 -
Spring Security 6 시점에서 SecurityContextHolderFilter 로 변경되었고, SecurityContextHolderFilter 는사용자의 HTTP 요청이 들어왔을 때 SecurityContext 를 불러와 워커 스레드의 ThreadLocal 에 저장한다. 1️⃣ Tomcat 워커 스레드와 요청 처리클라이언트 → HTTP 요청Tomcat 워커 스레드 하나가 요청을 할당받는다.Tomcat 의 메인 쓰레드는 어플리케이션 실행만 담당한다.이 워커 스레드는 요청 수명 동안 재사용됨(Thread Pool)👉 그래서 ThreadLocal 정리가 매우 중요함 2️⃣ SecurityContextHolderFilter의 역할 (Spring Security 6 핵심)Spring Securi..
Spring Security6 SecurityContextHolderFilter 동작과 ThreadLocal Clear 시점Spring Security 6 시점에서 SecurityContextHolderFilter 로 변경되었고, SecurityContextHolderFilter 는사용자의 HTTP 요청이 들어왔을 때 SecurityContext 를 불러와 워커 스레드의 ThreadLocal 에 저장한다. 1️⃣ Tomcat 워커 스레드와 요청 처리클라이언트 → HTTP 요청Tomcat 워커 스레드 하나가 요청을 할당받는다.Tomcat 의 메인 쓰레드는 어플리케이션 실행만 담당한다.이 워커 스레드는 요청 수명 동안 재사용됨(Thread Pool)👉 그래서 ThreadLocal 정리가 매우 중요함 2️⃣ SecurityContextHolderFilter의 역할 (Spring Security 6 핵심)Spring Securi..
2025.12.16