이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. 서블릿 필터와 스프링 빈 스프링에서 우리는 필터라는 기능을 자주 사용한다. 이 필터는 요청이 들어왔을 때, DispatcherServlet에 요청이 전달되기 전 과정까지 무언가 전처리를 해준다. 그리고 DispatcherServlet에서 응답이 나갈 때도 다시 한번 필터를 거쳐서 나가는 형태가 된다. 스프링에서 필터 기술을 지원하는 것처럼 보이기 때문에 필터를 스프링 기술이라고 생각할 수 있다. 그렇지만 엄밀히 말하면 필터는 스프링이 아닌 서블릿의 기술이다. 서블릿 필터는 서블릿 컨테이너에서 생성되고 실행된다. 그리고 스프링 빈은 스프링 컨테이너에서 생성되고 실행된다. 따라서 기본적으로 스프링 빈을 필터에서 주입 받아서 사용할 수 없는 구조다...
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. CSRF(사이트 간 요청 위조) 보안에 대해서 잘 모르는 내가 간단히 봤을 때, CSRF은 예전에 자주 유행하던 피싱 메일인 것 같다. 내가 특정 메일의 링크를 클릭하면서 뭔가 크게 잘못되는 경우로 이해할 수 있다. 아래를 보면 좀 더 명확하다. 사용자가 쇼핑몰에 로그인한다. 서버는 인증 처리를 해주면서, 쇼핑몰에게 세션 쿠키를 전달한다. 공격자가 링크를 사용자에게 전달한다. ex) 로또 당첨 축하드립니다! 같은 메일 공격용 웹 페이지에는 로또 당첨 이미지가 있고, 그걸 누르면 거기에 있는 URL 태그에 맞기 쇼핑몰에 공격자 요청을 하게 된다. 이 때, 잘못된 요청이라고 할지라도, 서버는 로그인 인증을 받은 사용자 브라우저가 요청을 하고 있는 ..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Spring Security 권한 설정 Spring Security는 크게 인증과 인가로 나누어진다. '인가'라는 개념에 필수적인 것이 권한이다. 인증을 받은 객체가 있는데, 이 객체가 가진 권한으로 이 자원에 접근 가능한지를 확인하는 과정이 인가다. 그렇다면 권한 설정이란 무엇일까? 바로 특정한 자원에 어떤 권한이 있어야만 접근할 수 있다는 것을 설정해주는 것이다. Spring Security는 크게 두 가지 권한 설정 방식을 제공하고, 각 권한 설정 방식을 통해 URL, Method에 권한을 설정해줄 수 있다. 선언적 권한 설정 방식 URL http.antMatchers("/user/**).hasRole("USER) Method @PreAu..
이 글은 인프런 정수원님의 강의를 복습하며 정리한 글입니다. SessionManagementFilter 앞선 게시글에서 http.sessionManagement()를 이용해서 Spring에서 사용하는 여러 세션에 대한 정책을 설정했었다. 이 API를 이용해서 처리한 것들을 정리해보면 다음과 같다. 동시 세션 제어 : 동시 접속 관련 처리 세션 고정 보호 : 세션 고정 공격으로부터 보호 세션 관리 : 인증 시, 사용자의 세션 정보를 등록, 조회, 삭제 등 세션 이력 관리 세션 생성 정책 설정 : 세션 생성 정책을 조작 위의 기능은 SpringSecurity에서 어떤 필터가 지원을 해줄까? 바로 SessionManagementFilter가 위의 네 가지 기능을 지원해준다. SessionManagementFi..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Spring Security Session 정책 Spring Security는 Session을 관리하는 정책을 API로 설정할 수 있다. 이 정책은 여러 경우에 필요할 수 있게 되는데, 예를 들어 JWT를 통한 인증을 할 때는 세션을 사용하지 않기 때문에 Spring Security에서 항상 세션을 생성하지 않아야 한다. 이런 경우들이 존재할 수 있기 때문에 Spring Security는 손쉽게 Session 정책을 설정할 수 있도록 돕는다. Session 정책 API 설정 http.ssessionManagement() : 세션 설정 시작 sessionCreationPolicy() : 세션 생정 정책을 설정한다. SessionCreationPo..