
이번 방학에 진행하는 프로젝트에서 보안 파트를 담당하게 됐다.보안쪽은 어렵다고 듣기도 했었고 경험도 없어서 보안 쪽을 해볼까 말까 하다가 이번 기회에 보안 마스터가 되보자는 꿈을 갖고 도전해보기로 했다.이번 글에서는 Spring Security를 적용했을 때 기본적인

Spring Security에서 보안 기능은 filter와 servlet의 도움으로 구현된다. 이번엔 servlet과 filter가 무엇이고 어떤 역할을 하는지 정리해보았다.우리가 백엔드 코드를 작성하고 이를 웹 서버에 배포하면, 클라이언트는 브라우저를 통해 우리가 작

이번 포스트에서는 Spring Security가 내부적으로 어떤 과정을 통해 보안 기능을 제공하는지 정리해 보았다.Spring Security은 위 사진과 같은 흐름을 가지고 작동한다.각 단계에서 어떤 일이 발생하는지, 각 구성요소가 하는 역할이 무엇인지를 이해하기 위

이번 포스트에서는 Spring Security가 실제로 어떤 흐름을 통해 동작하는지 코드를 통해 분석해보았다.인증을 실패한 케이스, 인증을 성공한 케이스로 나눠서 내부적으로 어떤 동작이 이뤄지는지 파악해보고자 하였다.AuthorizationFilter는 사용자가 자격

지난 포스트에 이어 이번 포스트에서는 사용자가 로그인 폼에 올바른 자격 증명을 했을 때 내부 흐름을 파악해보도록 하겠다. AbstractAuthenticationProcessingFilter 사용자가 로그인 할 때 거치는 Filter 중 하나로, 추상 클래스이며 구현

앞서 코드를 통해 Spring Security가 어떤 과정을 통해 자격 증명을 수행하는지 확인해봤는데 이를 보다 간단하게 정리해보았다사용자가 처음 보안이 필요한 API에 접근한다AuthrizationFilter, AbstractAuthenticationProcessin

MVC path를 보호하는 방법에 대한 정리 내용이다.기본적으로 Spring Security를 적용하면 모든 인증되지 않는 모든 요청에 대한 접근을 거부한다. 해당 기본 설정은 SpringBootWebSecurityConfiguration에서 확인할 수 있다.위 메소드

저번 포스트까지는 application.yml에서 username, password를 명시하여 인증 과정을 진행했으나 실제 프로덕트 환경에서는 한 명 이상의 유저 정보를 저장할 필요가 있다.여러 유저의 인증 정보를 저장하는 방식으로 애플리케이션 내 메모리에 저장하는 방

이번 포스트에서는 UserDetailsService와 UserDetailsManager의 차이에 대해 정리해보았다.Spring Security에서 지원하는 기본적인 인증 과정은 위 다이어그램처럼 진행되는데, UserDetailsService와 UserDetailsMan

이번 포스트는 UserDetails과 Authentication의 차이점을 알아 보았다.사용자 정보를 담는 객체로 Authentication과 UserDetails이 있는데, 둘의 차이는 무엇이고 왜 다른 객체로 나눠져 있는지 알아보았다.위 그림은 Spring Secu

이전까지는 웹 서버 내부에 유저 정보를 저장했었는데, 실제 프로덕트 환경에서는 유저 정보를 외부 DB에 저장하는 경우가 많다.이렇게 유저 정보를 DB에 저장하기 위해 Spring Security는 JdbcUserDetailsManager를 제공한다.JdbcUserDet

AuthenticationProvider는 사용자 인증 시 어떤 로직을 사용할지를 결정한다.username&password와 같은 기본적인 인증 외에도 OAUTH2 등의 인증 방식를 필요로 하는 경우가 있는데, 이 때는 서비스의 인증 방식에 맞는 Authenticati
Spring Security에서 인증/인가 시 발생하는 Exception을 정리해보았다. 인증/인가 시 예외가 발생하는 ExceptionTranslationFilter라는 필터가 이를 감지하고, AuthenticationException, AccessDeniedExc
Spring Security는 기본적으로 JSESSION이라는 쿠키를 클라이언트에서 전송하여 세션에 따라 사용자 정보를 유지하는데, 세션 관리를 위해 Spring Security는 여러 기능을 제공한다첫 번째로 세션이 만료되었을 때 사용자를 내가 지정한 URI로 red

Spring Security의 인증 과정에서는 해당 유저의 username, password, authorities 등의 정보를 담은 Authentication 객체가 생성된다.AuthenticationManager가 성공적으로 인증 과정을 마치면, 해당 Authent