이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. 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..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. 세션 고정 보호 세션 고정은 사용자를 공격하는 한 방법 중 하나다. 공격자가 서버에게서 먼저 세션 ID를 받은 후, 세션 ID를 사용자에게 심어두어 사용자가 그 세션 ID로 인증하도록 유도하는 방법이다. 그림과 함께 아래에서 좀 더 자세히 살펴볼 수 있다. 공격자가 서버에 접속한다. 서버는 공격자를 위한 세션을 만들고, SESSION ID = 123456을 응답해준다. 공격자는 응답받은 123456을 사용자에게 심어둔다. (사용자에게 세션 고정) 사용자는 SESSION ID = 123456을 헤더에 싣고, 서버에게 인증 요청을 한다. 서버는 인증을 하고, 인증 객체를 SESSION ID = 123456인 세션에게 담아주고, 응답을 내려준다. 공..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. 동시세션 제어 동시세션이란 동일한 계정으로 접속했을 때 만들어지는 세션을 의미한다. 즉, A,B라는 사용자가 각각 C라는 계정으로 접속했을 때 A,B 사용자들을 위한 세션이 각각 만들어진다. 이런 세션들을 동시세션이라고 한다. 동시세션을 제어하는 것은 중요한 일이다. 동시세션이 생긴다는 것은 동시에 여러 사람이 동일한 계정으로 접속할 수 있는 것을 의미한다. 따라서 동일 계정에서 동시에 사용할 수 있는 사람을 하나만으로 설정하고 싶다면, 동시세션을 제어해야한다. 동시세션 제어 전략 이전 사용자 세션 만료 전략 현재 사용자 인증 실패 전략 동시 세션 전략은 위와 같이 두 가지의 전략이 있다. 아래에서 좀 더 자세히 살펴보도록 한다. 이전 사용자 ..