BackEnd/Spring

[Spring] Spring Security (1)

JJangGu 2022. 1. 10. 18:36

스프링 시큐리티에 대한 기본 개념 학습

 

1. Spring Security 란 ?

어플리케이션에 인증과 권한 부여를 제공하는데 중점을 둔 스프링 하위의 프레임워크. 

 

여기서 인증(Authenticate) 인가(Authorize) 에 대한 이해가 먼저 필요합니다.

인증(Authenticate)은 간단히 말해서 누구인지 확인하는 것입니다.

어떤 보호된 리소스에 접근할 때 접근하는 대상이 누구인지 확인하는 과정입니다.

인가(Authorize)는 리소스에 대한 접근 권한이 있는지 확인하는 것입니다.

어떤 대상을 인증했을때, 그럼 그 대상은 이 리소스에 접근이 가능한지 확인합니다.

 

스프링 시큐리티는 인증, 인가의 과정을 Filter 를 통해서 제어를 합니다. 

Filter 의 위치를 대략적으로 그려보면 위와 같습니다. 

어플리케이션에 request 가 들어왔을때, 가장 바깥에서 요청과 응답을 걸러주는 역할을 합니다. '걸러준다'라는 표현에 집중해야 합니다.

커피를 생각해보면 커피 필터를 통해 맛있는 커피만 추출되듯이, 처리하고 싶은 요청을 필터를 통해 걸러준다고 해석해야합니다. 

 

필터를 통해 한번 걸러진 요청이 그 다음인 Dispatcher Servlet 으로 들어오고, 그 뒤에는 인터셉터나 프록시 패턴이 적용된 AOP 등을 거쳐서 원하는 위치에 도달하게 됩니다. 

 

스프링 시큐리티는 필터 체인 (Filter Chain) 을 통해서 역할을 수행하는데, 컨테이너가 하나의 필터 체인을 생성하고

개부의 필터들을 차례대로 수행하여 요청을 걸러냅니다.