스프링 시큐리티 JWT
·
카테고리 없음
스프링 시큐리티 필터 동작 원리 스프링 시큐리티는 클라이언트의 요청이 여러개의 필터를 거쳐 DispatcherServlet(Controller)으로 향하는 중간 필터에서 요청을 가로챈 후 검증(인증/인가)를 진행한다. 클라이언트 요청 -> 서블릿 필터 -> 서블릿(컨트롤러)   getPrincipal () 과 getAuthorities () 모두 Authentication 객체에서 사용자 인증 정보와 권한 정보를 가져오기 위한 메서드입니다. Spring Security가 인증 절차를 통해 Authentication 객체를 생성할 때 이 두 메서드가 설정되는데 , 둘은 각각 다른 역할을 가지고 있습니다.  1. getPrincipal ()- 역할 : getPrincipal () 은 인증된 사용자의 주체, ..
spring security 총정리(10) - (DefaultLoginPageGeneratingFilter,
·
카테고리 없음
Spring Security에서 로그인 페이지나 에러 페이지와 같은 기본 페이지를 필터에서 응답하는 이유는 Spring Security의 구조와 동작 방식 때문입니다. 구체적으로는, Spring Security가 요청을 필터 체인에서 먼저 처리하고, 보안 관련 요청을 컨트롤러 레이어까지 전달하지 않기 위해 기본 페이지를 필터에서 응답합니다.DefaultLoginPageGeneratingFilter는 이러한 보안 관련 기본 페이지를 생성하고 응답하는 역할을 수행하는 Spring Security의 필터입니다.왜 필터에서 기본 페이지를 응답하는가?Spring Security의 아키텍처:Spring Security는 필터 기반 보안 구조로 설계되어 있습니다. 요청이 서버에 도달하면, Spring Security..
스프링 시큐리티 총 정리(9) - (UserNamePasswordAuthenticationFilter)
·
카테고리 없음
UserNamePasswordAuthenticationFilter 목적 이 필터는 DefaultSecurityFilterChain에 기본적으로 등록되는 필터로 여덟 번째에 위치한다. 이 필터가 등록되는 목적은 POST : "/login" 경로에서 Form 기반 인증을 진행할 수 있도록multipart/form-data 형태의 username/password 데이터를 받아 인증 클래스에게 값을 넘겨주는 역할을 수행한다. 커스텀 SecurityFilterChain을 생성하면 자동 등록이 안되기 때문에 아래 구문을 통해서 필터를 활성화시켜야 한다. http             .formLogin(Customizer.withDefaults());  UsernamePasswordAuthenticationFilt..
스프링 시큐리티 내부구조 총정리(3)
·
프로젝트 정리/인턴
SecurityContextHolderStrategy 구현 종류private static void initializeStrategy() { if (MODE_PRE_INITIALIZED.equals(strategyName)) { Assert.state(strategy != null, "When using " + MODE_PRE_INITIALIZED + ", setContextHolderStrategy must be called with the fully constructed strategy"); return; } if (!StringUtils.hasText(strategyName)) { // Set default strategyName = MODE_THREADLOCAL; } if (strate..
Spring Security (스프링 시큐리티 내부 구조 총정리 -2)
·
프로젝트 정리/인턴
먼저 Servlet Authentication Architecture의 메인 아키텍처 요소들 정의부터 살펴보자 SecurityContextHolder : SecurityContextHolder는 Spring Security가 인증된 사용자의 정보를 저장하는 곳입니다. 애플리케이션 내의 여러 컴포넌트가 현재 인증된 사용자의 정보를 쉽게 조회할 수 있도록 한다.SecurityContext : SecurityContextHolder를 통해 가져올 수 있는 객체로, 현재 인증된 사용자의 인증 정보를 포함한다SecurityContext는 Authentication 객체를 포함하며, 이 객체를 통해 사용자가 인증되었는지, 어떤 권한을 가지고 있는지를 확인할 수 있다.Authentication : Authentica..
Spring Security (스프링 시큐리티 내부 구조 총정리 -1)
·
프로젝트 정리/인턴
사용자의 요청 -> 컨트롤러 (시큐리티 의존성 없는 경우) 과정1. 사용자의 요청 (Client Request)사용자(클라이언트)는 HTTP 요청(GET, POST, PUT, DELETE 등)을 서버로 보낸다. 이 요청은 브라우저, 모바일 앱, Postman 등 다양한 클라이언트에서 생성될 수 있다.2. DispatcherServlet (Front Controller) 수신Spring MVC 애플리케이션의 진입점은 DispatcherServlet이다. Spring에서는 모든 요청이 DispatcherServlet으로 전달되고, DispatcherServlet이 해당 요청을 적절한 곳으로 분배한다.DispatcherServlet이란?더보기Dispatcher Servlet은 HTTP 프로토콜로 들어오는 모든..
SameSite란?
·
CS
SameSite란 쿠키를 설정할 때, 쿠키에 부여하는 속성 값이다.SameSite의 옵션에는 None, Lax, Strict 이렇게 3가지가 존재한다. csrf 공격 시나리오유저의 쿠키가 https://blog.dokydoky.com에  대해 남아 있는 상태에서 의심스러운 사이트 url을 클릭했다고 가정하면 저 api를 쏘면 session에 쿠키가 자동으로 적용돼 요청이 날아가기에 비밀번호가 변경되버리는 불상사가 발생한다. 이 공격이 가능했던 이유첫번째, cross origin 사이에 write가 가능했다.두번째, 유저의 패스워드 변경 요청을 할 때, 브라우저가 유저의 세션 쿠키 값을 붙혀서 전송하기 때문이다. 근데 이때 블로그 서버가 유저한테 세션 쿠키를 발행할 때 , SameSite 옵션을 Stric..
뻘짓하며 배우는 CORS
·
프로젝트 정리/인턴
웹 서버 -> 프론트 서버라고 가정. HTML,CSS,JS API 서버 : 데이터를 처리할 수 있는 API들을 갖고 있는 서버라고 가정하자. 웹 서버에서 로그인을 처리하려고 함. 웹 서버에서 사용자는 로그인 정보를 기입하고, 이를 처리하려면API 서버에 기입된 정보들을 보내주게 됨. 근데 CORS error가 발생한다.  CORS를 이해하기 위해 SOP도 같이 알아보자.SOP는 Same Origin Policy의 약자이고, CORS는 Cross Origin Resource Sharing의 약자이다. The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one orig..