Spring(21)
-
[Spring Security] 기본 필터 소개
스프링 시큐리티는 웹 요청에 관련된 필터 체인을 제공해준다. 이 필터들이 어떤 역할을 하는지 개략적으로 알아보도록 한다. 스프링 시큐리티 기본 필터 스프링 시큐리티에서 기본적으로 제공하는 필터는 다음과 같다. 참고로 이 스프링 시큐리티의 버전은 5.7.7이다. 먼저 이 필터들이 어떤 동작을 하는지 간략히 설명하고 나서 중요한 필터들에 대해 자세히 설명하도록 하겠다. DisableEncodeUrlFilter 세션 ID가 URL에 포함되는 것을 막기 위해 HttpServletResponse를 사용해서 URL이 인코딩 되는 것을 막기 위한 필터이다. WebAsyncManagerIntegrationFilter SpringSecurityContextHolder는 기본적으로 ThreadLocal 기반으로 동작하는데..
2023.03.06 -
[Spring Security] 기본 동작 원리
1. 스프링 시큐리티란? 스프링 시큐리티는 스프링 생태계에서 지원하는 보안 관련 기능을 제공하는 프레임워크이다. 기본적으로 스프링을 백엔드로 활용한다면 보안과 관련된 부분은 서블릿 필터나 스프링 인터셉터에서 처리했다. 하지만 일일이 이런 식으로 실제 프로젝트에서 하는 것은 체계화되지 않은 부분에 불과했고 이를 스프링에서 공식적으로 제공하였다. 본격적으로 시작하기 전에 보안 용어들을 정리하고 가도록 하겠다. 인증(Authentication): 요청한 사람이 본인인지를 확인하는 절차 인가(Authorization): 인증된 사용자가 접근한 자원에 권한이 있는지를 확인하는 절차 2. 기본 동작 원리 및 흐름 스프링 시큐리티는 서블릿 필터 기반으로 동작하면서 스프링의 많은 지원을 함께 사용할 수 있도록 했다. ..
2023.03.06 -
[Session] Spring Session 톺아보기
1. 개요 Spring Session은 Spring 애플리케이션에서 세션을 더 통합적이고 체계적으로 관리하기 위해 개발된 프로젝트이다. Spring Session은 HTTP, WebSocket, WebFlux 환경에서 언제든지 세션과 관련된 구현체를 변경할 수 있도록 제공된다. 2. 모듈 Spring Session을 활용하기 위해 제공되는 주요 모듈을 살펴보자. Spring Session Core - 핵심 Spring Session 기능 및 API 제공 Spring Session Data Redis - Redis 구성을 지원하는 SessionRepository 및 ReactiveSesionRepository 구현체 제공 Spring Session JDBC - RDB 및 구성을 지원하는 SessionRep..
2022.06.29 -
[Spring Boot] @RequestParam vs @RequestPart
조사하게 된 원인 프로젝트를 하면서 Multipart 데이터로 JSON과 이미지 파일 데이터를 함께 받기 위해 스프링 기능을 찾던 도중 @RequestPart에 대해 새로 알게 되었다. @RequestParam이라는 어노테이션도 있는데 둘의 차이에 대해 조사해 보았다. 이는 공식 문서에 잘 나타나 있다. 먼저 각 어노테이션에 대한 공식 문서의 설명을 보자. @RequestParam Annotation which indicates that a method parameter should be bound to a web request parameter. Supported for annotated handler methods in Spring MVC as follows: In Spring MVC, "reques..
2022.03.08 -
[JPA] 코틀린으로 엔티티 작성 시 고려할 점
최근 코틀린에 빠져서 코틀린으로 기존의 자바 작업들을 바꿔서 해보는 중이다. 그러다 코틀린에서 JPA를 쓰려고 하니 여러 가지 고려할 점이 생겨나 글을 작성하게 되었다. 먼저 JPA의 구현체인 Hibernate의 유저 가이드를 살펴보자. https://docs.oracle.com/javaee/5/tutorial/doc/bnbqa.html Entities - The Java EE 5 Tutorial Entities An entity is a lightweight persistence domain object. Typically an entity represents a table in a relational database, and each entity instance corresponds to a row ..
2022.02.08 -
[Spring Security] Spring Security 필터 순서 변경하기
최근 상경을 위해 알바를 시작해서 출퇴근시간까지 합해서 주5일 하루에 10시간씩 일하게 되어 공부나 포스팅하기가 힘들다.. ㅜㅜ 그래도 조금씩이나마 포스팅을 진행하고자 한다. 토이 프로젝트를 진행하던 중 커스텀 필터를 만들게 되었다. 그런데 분명 setOrder(1)로 지정했음에서 스프링 시큐리티에서 생성된 필터가 항상 앞서 적용되는 것을 확인했다. 이는 스프링 시큐리티에서 설정된 setOrder의 기본값이 -100으로 설정되어 있어서 생긴 현상이었다. application.yml(또는 properties)에서 이를 변경해주면 해결된다. 그런데 나머지 필터들은 스프링 부트에서 자동으로 등록한 필터같은데 그 역할이 궁금해져서 검색해보았다. OrderedCharacterEncodingFilter 스프링에서 ..
2022.01.24