Username과 Password를 입력하여 인증하는 방법으로, Spring Security에서 사용되는 3가지 방식은 다음과 같습니다.InMemoryUserDetailsManagerJdbcUserDetailsManagerCustomUserDetailsManagerAuthenticationManager는 사용자의 Username과 Password에 기반하여 인증을 처리하도록 AuthenticationProviders에 인증 책임을 위임합니다. Authentication Providers의 구현체 중 하나인 DaoAuthenticationProvider가 인증을 담당합니다. DaoAuthenticationProvider 또한 UserDetailsService에 인증 책임을 위임합니다. InMemoryUse..
Default Security Filter Chain기본적으로 Spring Security 프레임워크는 웹 애플리케이션 내부에 존재하는 모든 경로를 보호한다. 이러한 동작을 하는 이유는 기본적으로 설정된 filter chain 내부의 코드 때문이다. 전체 코드package org.springframework.boot.autoconfigure.security.servlet;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.boot.a..
실제로 사용자가 웹 애플리케이션을 사용할 수 있는 프로젝트를 진행하고 있다. 그렇다면 당연히 보안 이슈가 발생할 것이라 누구나 예상할 수 있다. 백엔드에서 작성한 API를 프론트와 연동하는 과정에서 CORS라는 단어가 계속 나왔다. CORS라는 단어를 처음 들어보는 내 입장에선 당연히 이해할리가 없었다. 심지어 학부 수업에서도 들어본 적이 없다...😅 그동안 스프링을 공부하면서 왜 CORS라는 것을 들어보지 못 했을까? 이유는 간단했다. 로컬 환경에서 작업할 때는 CORS를 고려할 필요가 없었기 때문이다. CORS 주로 브라우저에서 실행되는 웹 애플리케이션 간에 적용하는 것이다. 내가 만든 API를 Postman으로 호출해보면서 진행했기 때문에 보안 정책이 필요가 없었다. 학교 시험이 끝나면 공부해보고..
Spring Security Filters사용자의 요청이 들어왔을 때, Spring Security Filter가 요청을 가로챕니다. 이때, 요청을 한 사용자가 인증이 필요한지 여부를 식별합니다. 인증이 필요한 사용자인 경우, 로그인 페이지로 이동합니다.Authentication로그인 페이지에서 입력된 인증 정보(username, password)를 사용하여 Authentication 객체를 생성합니다. 이 객체를 가지고 유효한 인증인지 확인하는 과정이 이루어집니다.Authentication Manager넘겨받은 Authentication 객체가 유효한 인증인지 확인합니다. Authentication 객체를 Authentication Providers로 넘겨 유효성 검사를 위임합니다. 이때,..
Spring Security스프링 시큐리티란 Authentication(인증), Authorization(인가) 부여 및 보호 기능을 제공하는 프레임워크이다. 개발자가 커스텀 기능을 만들어서 웹 애플리케이션의 보안을 적용하는 것엔 한계가 존재한다. 왜냐하면 해커들은 계속하여 공격을 시도할 것이기 때문... 따라서 스프링의 보안만을 담당하는 팀이 제공하는 Spring Security 프레임워크를 사용한다. 개발자는 비즈니스 로직에만 몰두하고, 보안은 프레임워크의 도움을 받는 것이다.서블릿 필터(Servlet Filter)이름에서도 알 수 있듯이 사용자의 요청이 들어왔을 때 필터 기능이 작동한다고 생각하면 된다.사용자의 요청이 서버로 도착하기 전에 Servlet을 거쳐서 필터링되는 것을 Se..