● Spring Security란
* spring Security는 spring 기반 애플리케이션의 보안(인증,인가등)을 담당하는 스프링 프레임워크다.
* spring Security는 인증,인가에 대한 부분을 Filter에서 처리하니 비지니스 로직에서 안해도된다.
( spring Security 는 서블릿의 필터 기반으로 동작)
* Spring Security는 세션-쿠키 방식으로 인증한다
[ 인증과 인가 ]
* 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인하는 절차
* 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차
● UserDetails
* Spring Security에서 사용자의 정보를 담는 인터페이스
● UserDetailsService
* Spring Security에서 유저의 정보를 가져오는 인터페이스
(UserDetails, UserDetailsService 이용하면 default로그인이 아닌 네이버,구글처럼 DB이용해서 일반 사용자 로그인 할 수 있다.)
● DelegatingFilterProxy
* Spring Security는 작업하기 위해 Servlet Container 기반의 필터에서 수행하는데 Servlet Container 하니 스프링 컨테이너에 등록된 빈을 인식할 수 없어서 DelegatingFilterProxy 이용한다.
* 그러니 Spring Security에서는 DelegatingFilterProxy라는 서블릿 필터의 구현체를 제공하고, DelegatingFilterProxy 는 서블릿 매커니즘을 통해 서블릿의 필터로 등록될 수 있으며 스프링에 등록된 빈을 가져와 의존성을 주입할 수 있다.
● FilterChainProxy
* FilterChainProxy는 DelegatingFilterProxy 내부에 있는거고 Spring Security 제공하는 필터이다.
* DelegatingFilterProxy 를 통해 받은 요청과 응답을 SecurityFilterChain 에 전달하고, 해당 요청에 맞는 작업을 결정하는 작업을 한다.
● SecurityFilterChain
* 인증을 처리하는 여러 개의 시큐리티 필터를 담는 필터 체인이고, 여러 개의 SecurityFilterChain을 구성하여 매칭되는 URL에 따라 다른 SecurityFilterChain이 사용되도록 할 수있다.
● SecurityFilter
* 이제 각각의 필터 들을 말한다.
● SecurityContextHolder, SecurityContext
* SecurityContextHolder는 SecurityContext를 보관,관리하는 역활이고
SecurityContext는 인증이 완료된 사용자의 상세 정보(Authentication)를 저장한다.
● Authentication
* Authentication는 현재 인증된 사용자를 나타내며 SecurityContext에서 가져올 수 있다.
* principal는 사용자를 식별하고 Username/Password 방식으로 인증할 때 일반적으로 principal 는 UserDetails 인스턴스.
* credentials는 주로 비밀번호, 대부분 사용자 인증에 사용한 후 비운다.
* authorities는 사용자의 권한 정보
출처
https://limdevbasic.tistory.com/19
나중 Security 모듈에 대해 참고 하고 싶을땐 ↓ 참고