이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Spring Security : Web Ignore Spring Security는 기본적으로 모든 자원에 접근하는 요청에 대해서 인증 + 인가를 확인해서 자원에 접근할 수 있는 경우에만 값을 내려준다. 이렇게 인증 / 인가를 모두 검사하는 것이 좋을 것처럼 보이지만 필요하지 않는 경우가 있다. 예를 들어 정적인 자원들에 대한 값이다. 예를 들어 특정 URL에 접근했을 때, View가 렌더링 된다고 가정해보자. 이미 URL에 접근할 수 있다는 인가를 받으면 그 화면이 바로 랜더링이 되면 된다. 그렇지만 스프링 시큐리티는 기본적으로 모든 접근에 대해서 인증/인가를 검색하기 때문에 이 URL을 랜더링 하는데 필요한 정적인 파일(CSS / HTML /..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Spring Security : 계정 생성 + 권한 설정 + 인증/인가 설정 Spring Security는 기본적으로 인증 / 인가를 바탕으로 동작한다. 인증/인가를 위해서 필요한 것은 바로 계정이고, 그 계정에 어떤 권한이 설정되는지가 중요하다. 그리고 어떤 자원으로 접근할 때 인증이 필요한지, 그리고 어떤 권한이 필요한지를 설정하는 것이 Spring Security의 시작이다. 이번 포스팅에서는 계정 생성 + 권한 설정 / 인증 + 인가 설정에 대해 간략히 살펴본다. Spring Security Config 정보 설정 @EnableWebSecurity @Configuration public class SecurityConfig extends..
이 게시글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. 여러 보안 클래스 설정 지금까지는 하나의 보안 설정 클래스만 작성해서 사용하는 경우를 다뤄왔다. 그런데 보안을 고려해야할 것이 많아지면, 당연히 하나의 보안 설정 클래스에서 너무 많은 책임을 지게 된다. 따라서, 설정 클래스의 분리를 통해 코드의 복잡도를 낮출 것이 고려된다. 그렇다면, 이렇게 설정 클래스를 여러 개로 나누어 설정을 하는 경우는 어떻게 동작을 하게 될까? 여러 보안 클래스 설정, 그림 다음과 같이 두 개의 설정 클래스가 있을 때를 가정해보자. API는 동일한데, 단순히 antMatcher가 다른 경우로 이해를 할 수 있다. 위 경우 어떻게 동작할까? 설정 클래스 별로 보안 기능이 각각 동작함. 설정 클래스 별로 각각 필터가 ..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. 서블릿 필터와 스프링 빈 스프링에서 우리는 필터라는 기능을 자주 사용한다. 이 필터는 요청이 들어왔을 때, DispatcherServlet에 요청이 전달되기 전 과정까지 무언가 전처리를 해준다. 그리고 DispatcherServlet에서 응답이 나갈 때도 다시 한번 필터를 거쳐서 나가는 형태가 된다. 스프링에서 필터 기술을 지원하는 것처럼 보이기 때문에 필터를 스프링 기술이라고 생각할 수 있다. 그렇지만 엄밀히 말하면 필터는 스프링이 아닌 서블릿의 기술이다. 서블릿 필터는 서블릿 컨테이너에서 생성되고 실행된다. 그리고 스프링 빈은 스프링 컨테이너에서 생성되고 실행된다. 따라서 기본적으로 스프링 빈을 필터에서 주입 받아서 사용할 수 없는 구조다...
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. CSRF(사이트 간 요청 위조) 보안에 대해서 잘 모르는 내가 간단히 봤을 때, CSRF은 예전에 자주 유행하던 피싱 메일인 것 같다. 내가 특정 메일의 링크를 클릭하면서 뭔가 크게 잘못되는 경우로 이해할 수 있다. 아래를 보면 좀 더 명확하다. 사용자가 쇼핑몰에 로그인한다. 서버는 인증 처리를 해주면서, 쇼핑몰에게 세션 쿠키를 전달한다. 공격자가 링크를 사용자에게 전달한다. ex) 로또 당첨 축하드립니다! 같은 메일 공격용 웹 페이지에는 로또 당첨 이미지가 있고, 그걸 누르면 거기에 있는 URL 태그에 맞기 쇼핑몰에 공격자 요청을 하게 된다. 이 때, 잘못된 요청이라고 할지라도, 서버는 로그인 인증을 받은 사용자 브라우저가 요청을 하고 있는 ..