반응형

security 6

[Spring Security] 스프링 시큐리티 권한 부여 처리 흐름

스프링 시큐리티의 권한 부여 처리 흐름 애플리케이션 서비스에서 사용자 인증에 성공한 이후에는 인가(권한 부여)가 필요하다. 스프링 시큐리티의 필터 체인을 통해 사용자 인증에 성공한 다음에는 애플리케이션에서 제공하는 리소스에 접근할 수 있도록 권한 부여 작업을 위한 필터 체인을 통과해야 한다. 다음은 사용자 인증이 정상적으로 처리된 이후 리소스에 대한 접근 권한을 부여하는 흐름에 대한 이미지이다. 스프링 시큐리티 필터 체인에서 AuthorizationFilter는 URL을 통해 인증된 사용자의 권한 부여하는 필터이다. (1) AuthorizationFilter는 SecurityContextHolder로부터 Authentication 객체를 획득한다. (2) HttpServletRequest와 획득한 Aut..

[Spring Security] 스프링 시큐리티 인증 처리 흐름

스프링 시큐리티의 인증 처리 흐름 스프링 시큐리티에서는 스프링 시큐리티 필터 체인을 통해 보안을 위한 특정 작업을 처리한다. 다음은 사용자가 로그인 인증을 위한 요청을 할 경우, 스프링 시큐리티에서 해당 인증 요청을 어떻게 처리하는지에 대한 핵심 컴포넌트들의 인증 처리 흐름이다. 1. 사용자가 로그인을 하기 위해 아이디와 패스워드를 포함한 요청(request)을 보낸다. 사용자 로그인 요청이 들어오면 UsernamePasswordAuthenticationFilter가 해당 요청을 전달받는다. 2. UsernamePasswordAuthenticationFilter는 전달받은 Username과 Password를 이용하여 UsernamePasswordAuthenticationToken을 생성한다. Userna..

[Spring Security] 스프링 시큐리티 DelegatingPasswordEncoder - 암호화 알고리즘 변경하기

DelegatingPasswordEncoder DelegatingPasswordEncoder는 스프링 시큐리티에서 지원하는 PasswordEncoder 인터페이스의 구현 객체를 생성해주는 컴포넌트이다. DelegatingPasswordEncoder를 통해 애플리케이션에서 사용할 PasswordEncoder를 결정하고, 사용자가 입력한 패스워드를 단방향으로 암호화한다. DelegatingPasswordEncoder는 스프링 시큐리티 5.0부터 등장했으며, 이전 버전에서는 평문 텍스트(Plain text) 패스워드를 그대로 사용하는 NoOpPasswordEncoder가 PasswordEncoder의 default로 고정되어 있었다. 하지만, NoOpPasswordEncoder를 사용하면서 발생하는 문제를 해..

[Spring Security] 필터와 필터 체인(Filter Chain) 구현하기

필터(Filter) 서블릿 필터(Servlet Filter)는 서블릿 기반 애플리케이션의 엔드포인트에 요청이 도달하기 전에 해당 요청을 가로채어 특정 처리를 할 수 있도록 해주는 Java 컴포넌트이다. 위 이미지는 서블릿 기반 애플리케이션에서 서플릿 필터의 위치를 나타내고 있다. 클라이언트가 요청을 전송하면 서블릿 필터에서 특정 처리를 한다. 필터에서 모든 처리가 완료된 이후 DispatcherServlet에서 핸들러 매핑 작업을 진행한다. 필터 체인(Filter Chain) 필터 체인은 여러 개의 필터가 체인처럼 엮인 것을 말한다. 모든 요청(request)이 필터 체인을 거친 후에 서블릿 서비스에 도달할 수 있도록 한다. 필터와 필터 체인의 특성 서블릿 필터 체인은 요청 URI path를 기반으로 H..

[Spring Security] 스프링 시큐리티의 구조와 흐름

Intro Spring Security를 구현한 코드의 흐름은 잘 드러나지는 않지만 내부적으로는 Spring Security에서 제공하는 컴포넌트들이 애플리케이션 내부에서 User의 인증과 인가(권한 부여)에 대한 처리를 알아서 해준다. 이처럼 내부에서 일어나는 과정들을 구체적으로 이해하지 못한 상태에서는 Spring Security라는 기술을 이해하는 데 있어 한계에 부딪힐 수 있다. Spring Security를 애플리케이션에 적용하는데 어려움을 겪는 가장 큰 이유 중 하나는 Spring Security의 아키텍처(구조)와 Spring Security의 컴포넌트들이 어떻게 인터랙션해서 인증, 권한 등의 보안 작업을 처리하는지 이해하지 못했기 때문이다. Spring Security의 동작 방식을 이해하..

[Spring Security] 스프링 시큐리티란? - 기능, 용어, 사용하는 이유

Intro 먼저, 실제 애플리케이션에서 보안을 고려하지 않은 상태에서 서비스를 하게 되면 여러 문제가 발생할 수 있다. 인증(Authentication) 수단이 없는 경우 사용자가 해당 서비스를 이용하는 사람이 나 자신임을 증명할 방법이 없다. 다른 사람이 얼마든지 나의 정보를 조회할 수 있으며, API 호출 등을 통해 서비스를 이용할 수 있게 된다. 따라서 사용자가 본인임을 증명할 수 있는 인증 수단이 필요하다. ID와 PASSWORD와 같은 인증 정보를 사용해야 함 인가(Authorization) 기능이 없는 경우 사용자 인증 절차를 통과하더라도 모든 리소스에 접근할 수 있는 것은 아니다. 쇼핑몰을 예로 들면 판매자와 고객 등으로 구분할 수 있을 것이다. 판매자의 경우 상품을 등록하는 리소스를 이용할..

반응형