Spring/Security

    [Spring Security] 스프링 시큐리티의 아키텍쳐

    [Spring Security] 스프링 시큐리티의 아키텍쳐

    Authentication and Access Control 애플리케이션에서 보안은 인증과 권한의 두 가지 문제로 요약된다. 스프링 시큐리티는 인증과 권한을 분리하도록 설계되어있으며, 두 가지 모두 각각의 전략과 확장 지점들을 가지고 있다. Authentication Authentication의 주요 인터페이스는 AuthenticationManager이며, 이는 딱 한 개의 메소드를 가지고 있다. public interface AuthenticationManager { Authentication authenticate(Authentication authentication) throws AuthenticationException; } 이 메소드가 하는 일은 다음 3가지이다. 입력이 유요한 주체인 경우 Au..

    [Spring Security] 스프리 시큐리티를 이용한 회원가입, 로그인 구현

    [Spring Security] 스프리 시큐리티를 이용한 회원가입, 로그인 구현

    시큐리티 설정 파일을 만든다. @Configuration @EnableWebSecurity // 모든 요청 URL이 스프링 시큐리티의 제어를 받도록 만드는 어노테이션. // 내부적으로 SpringSecurityFilterChain이 동작하여 URL 필터가 적용된다. @RequiredArgsConstructor // Adapter를 상속함으로써 httpSecurity의 다양한 속성을 설정. public class WebSecurityConfig extends WebSecurityConfigurerAdapter { // defines which URL paths should be secured and not. @Override protected void configure(HttpSecurity http) t..

    [Spring Security] 기본 로그인 인증 로직

    [Spring Security] 기본 로그인 인증 로직

    이번에는 스프링 시큐리티에서 기본 HTTP 인증 로직이 어떻게 돌아가는지 알아보자. Basic HTTP Authentication 클라이언트로 요청이 들어오면 SecurityFilterChain에서 다음과 같은 동작이 일어난다. 1. 클라이언트가 인증되지 않은 요청을 한다. 2. 스프링 시큐리티의 FilterSecurityInterceptor는 AccessDeniedException 예외를 던지면서 요청을 거절한다. 3. 유저가 인증되지 않았기 때문에 ExceptionTranslationFilter는 인증에 필요한 과정을 실행한다. - AuthenticationEntryPoint의 구현체인 Basic AuthenticationEntryPoint는 WWW-Authenticate header를 보낸다. - ..

    [Spring Security] 스프링 시큐리티 인증 로직

    [Spring Security] 스프링 시큐리티 인증 로직

    스프링 시큐리티의 큰 구조에 이어서 스프링 시큐리티의 인증 로직과 구조에 대해서 자세히 알아보자. 지난 포스트를 안 본 사람은 아래 링크를 참고하자. https://brightmango.tistory.com/360 [Spring Security] 스프링 시큐리티와 구조, 동작 원리 Spring Security란? 입증, 권한, 그리고 흔한 공격에 대한 방어적 기술을 제공하는 프레임워크이다. 1. 입증이란 특정 리소스에 접근하는 사용자의 신원을 어떻게 증명할 것인지에 대한 부분이다. brightmango.tistory.com SecurityContextHolder 스프링 시큐리티 인증 모델의 핵심은 누가 인증이 되었는지 저장하는 SecurityContextHolder이다. 만약에 이 holder가 값을 가..

    [Spring Security] 스프링 시큐리티와 구조, 동작 원리

    [Spring Security] 스프링 시큐리티와 구조, 동작 원리

    Spring Security란? 입증, 권한, 그리고 흔한 공격에 대한 방어적 기술을 제공하는 프레임워크이다. 1. 입증이란 특정 리소스에 접근하는 사용자의 신원을 어떻게 증명할 것인지에 대한 부분이다. 가장 흔한 입증 방식은 유저에게 이메일과 패스워드를 입력하게 하는 방식이다. 2. 이런 입증과정을 통해 입증이 되면, 사용자는 권한을 행사할 수 있게 된다. (특정 리소스에 접근할 수 있음) Spring Security와 Servlet Applications 스프링 시큐리티는 Servlet의 Filter를 사용함으로써 Servlet 컨테이너를 지원한다. 따라서 Servlet을 사용하는 모든 어플리케이션에서 스프링 시큐리티를 사용할 수 있다. Architecture Servlet을 기반으로 한 어플리케이션..