스프링 시큐리티(3)
-
[Spring Security] 인가 흐름 및 절차
⚠️ 스프링 시큐리티의 인가는 인증 절차를 먼저 이해하는 편이 권장되므로 https://somuchthings.tistory.com/197 을 먼저 읽고 오는 것을 추천한다. 1. 인가(Authorization)란? 인가(Authorization)는 인증된(authenticated) 사용자가 요청한 자원에 대해 접근할 권한이 있는지를 판단하는 절차이다. 간단히 예를 들면 회원 사용자는 관리자 페이지에는 접근하지 못하도록 해야 한다는 규칙이 있다. 회원 사용자는 분명 서비스를 이용하도록 인증되었지만 관리자 자원에 대한 인가는 받지 못하는 것이다. 2. 스프링 시큐리티의 인가 흐름 앞선 필터를 모두 지나서 맨 마지막에 인가 처리를 담당하는 FilterSecurityInterceptor에 도달한다. 이 클래스..
2023.03.18 -
[Spring Security] 인증 흐름 및 절차
1. 들어가며 스프링 시큐리티는 여러 가지 인증을 처리할 수 있도록 확장성 있게 개발되었다. 그 중 이번에는 기본적으로 제공되는 username과 password를 이용한 form 기반의 인증을 다룰 것이다. 2. SecurityContextPersistenceFilter 인증 처리가 시작되기 전에 거치게 되는 필터이다. 이 필터는 SecurityContext가 현재 요청에 포함되어 있는지 확인하고 없다면 만들어주는 역할을 수행한다. 그리고 이 SecurityContext는 하나의 요청의 흐름이 사용자에게 응답될 때까지 유지된다. 그 기반은 ThreadLocal로 동작한다. 실제로 인증을 처리하는 필터는 이후에 등장하는 UsernamePasswordAuthenticationFilter이다. 3. Auth..
2023.03.07 -
[Spring Security] 기본 동작 원리
1. 스프링 시큐리티란? 스프링 시큐리티는 스프링 생태계에서 지원하는 보안 관련 기능을 제공하는 프레임워크이다. 기본적으로 스프링을 백엔드로 활용한다면 보안과 관련된 부분은 서블릿 필터나 스프링 인터셉터에서 처리했다. 하지만 일일이 이런 식으로 실제 프로젝트에서 하는 것은 체계화되지 않은 부분에 불과했고 이를 스프링에서 공식적으로 제공하였다. 본격적으로 시작하기 전에 보안 용어들을 정리하고 가도록 하겠다. 인증(Authentication): 요청한 사람이 본인인지를 확인하는 절차 인가(Authorization): 인증된 사용자가 접근한 자원에 권한이 있는지를 확인하는 절차 2. 기본 동작 원리 및 흐름 스프링 시큐리티는 서블릿 필터 기반으로 동작하면서 스프링의 많은 지원을 함께 사용할 수 있도록 했다. ..
2023.03.06