본문 바로가기

Spring/Spring Securitiy

(9)
10. AuthenticationManager 개요 AuthenticationManager는 Spring Security에서 인증(authentication) 과정을 담당하는 핵심 인터페이스입니다. 이 컴포넌트는 클라이언트가 제공한 자격 증명을 기반으로 사용자를 인증하고, 인증된 사용자에 대한 정보를 반환하거나, 인증에 실패할 경우 예외를 발생시킵니다. 1. 동작 원리핵심 메소드:AuthenticationManager는 단 하나의 메소드인Authentication authenticate(Authentication authentication)를 정의합니다. 이 메소드는 입력된 Authentication 객체(예: 사용자의 아이디와 비밀번호)를 받아서 인증을 수행합니다.인증 과정:내부적으로 AuthenticationManager는 하나 이상의 Authenti..
8. Spring AuthenticationProvider 개요 Spring Security에서 AuthenticationProvider는 사용자 인증을 처리하는 핵심 인터페이스 중 하나입니다. 사용자의 자격 증명을 검사하고 인증이 성공하면 Authentication 객체를 반환합니다.즉, 사용자의 username/password를 확인하거나, OAuth, JWT, API Key 등의 인증 방식을 처리하는 역할을 수행합니다. 1. AuthenticationProvider의 역할Authentication 객체를 입력받아 인증을 수행.인증이 성공하면 Authenticated 상태의 Authentication 객체를 반환.인증 실패 시 예외(BadCredentialsException 등)를 발생.특정한 타입의 인증 객체만 처리할 수 있도록 제어 가능. 2. Authenti..
7. 6.1버전 전에 구현되었던 SecurityConfig 리펙토링 Spring Security는 6 버전대로 올라가면서 WebSecurityConfigurerAdapter가 Deprecated 되었습니다. 이로 인해 이전에는 WebSecurityConfigurerAdapter를 상속받아 메서드를 오버라이딩하는 방식으로 보안 구성을 했지만, 최신 버전(6.1 기준)에서는 SecurityFilterChain과 관련된 @Bean을 직접 정의하는 방식으로 구성이 바뀌었습니다. 1. 예전 방식 (WebSecurityConfigurerAdapter 사용) Spring Security 6.1 이전의 예시@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { ..
6. 인증(Authentication)의 기본 개념과 구조와 Spring Security 1. 인증(Authentication)이란?인증은 사용자가 주장하는 신원을 검증하는 과정입니다. 즉, 사용자가 제공하는 자격 증명(예: 사용자명, 비밀번호, 토큰 등)을 확인하여 실제 등록된 사용자와 일치하는지를 판별합니다. 이 과정을 통해 시스템은 사용자가 누구인지 확인하고, 이후 인가(authorization) 과정을 통해 해당 사용자가 요청한 자원에 접근할 수 있는 권한이 있는지 결정합니다. 2. 전통적인 웹 애플리케이션에서의 인증 플로우A. 로그인 요청사용자 입력:사용자가 HTML 폼을 통해 사용자명과 비밀번호 등 자격 증명을 입력합니다.요청 전송:브라우저는 로그인 폼의 데이터를 HTTP POST 방식으로 서버에 전송합니다.B. 인증 필터 및 토큰 생성Authentication Filter:Spr..
5. Spring Security 6 버전 기준 이전 방식(WebSecurityConfigurerAdapter 사용)과 최신 방식(SecurityFilterChain 사용) 비교 Spring Security는 6 버전대로 올라가면서 WebSecurityConfigurerAdapter가 Deprecated 되었습니다. 이로 인해 이전에는 WebSecurityConfigurerAdapter를 상속받아 메서드를 오버라이딩하는 방식으로 보안 구성을 했지만, 최신 버전(6.1 기준)에서는 SecurityFilterChain과 관련된 @Bean을 직접 정의하는 방식으로 구성이 바뀌었습니다. 1. 예전 방식 (WebSecurityConfigurerAdapter 사용)Spring Security 6.1 이전의 예시@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { ..
4. SecurityConfig 기본 사항 Spring Security를 사용해 백엔드를 구성할 때, 보통 SecurityConfig 클래스에서 구현해야할 사항들 정리 1. 프로젝트 의존성 확인Spring Boot를 사용한다면 spring-boot-starter-security를 의존성에 추가해야 합니다.Spring Security 버전에 따라 설정 방법이 조금씩 달라질 수 있으니, 사용하는 버전에 맞춰서 작성해야 합니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' // 다른 의존성들...} 2. PasswordEncoder 설정패스워드를 저장할 때는 반드시 평문(plain text)이 아닌 암호화된 형태로 저장해야 합니다. S..
3. 필터 체인에서 자주 사용되는 시큐리티(보안) 필터 간단하게 정리 필터 체인(Filter Chain)은 말 그대로 여러 개의 필터들이 체인 형태로 연결되어 순차적으로 요청(Request)과 응답(Response)을 가로채 처리하는 구조를 말합니다. 이런 필터 체인을 통해 인증, 권한 확인, 세션 관리, CSRF 방어 등의 보안 기능들을 체계적으로 구현할 수 있습니다. 특히 Java 기반(예: Spring Framework) 웹 애플리케이션에서는 Servlet Filter를 활용해 보안 로직을 구성하는 경우가 많으며, Spring Security는 내부적으로 다양한 보안 관련 필터들을 연결한 “필터 체인”을 사용해 방대한 보안 기능을 제공하는 대표적인 예시입니다. 1. Spring Security의 핵심 필터 체인 구조Spring Security는 DelegatingFi..
2. @EnableGlobalMethodSecurity 대체 @EnableGlobalMethodSecurity는 Spring Security 6.0(2022년 11월 릴리즈)부터 더 이상 사용되지 않으며, 대신 새로운 방식으로 변경되었습니다. 이는 스프링 보안 설정을 더욱 직관적이고 간소화하기 위한 변화입니다. 대체: @EnableMethodSecurityimport org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;@Configuration@EnableMethodSecurity(prePostEnabled = true)public class SecurityConfig { // 보안 설정 관련 코드}  @EnableMethodSecurity 주요 변경점..