본문 바로가기

개발중/JSON Web Tokens (JWT)

[JWT🔒] 스프링 시큐리티의 구조

728x90
반응형

 

스프링 시큐리티는 주로 서블릿 필터와 이들로 구성된 필터체인을 사용하고 있습니다.

 

실제 로그인 시에 스프링 시큐리티의 동작 플로우를 바탕으로

인증과 관련된 스프링 시큐리티의 아키텍쳐를 알아 보도록 하겠습니다.

 


사용자가 로그인 정보와 함께 인증 요청(Http Request)

 


AuthenticationFilter가 이 요청을 가로챕니다. 

이 때 가로챈 정보를 통해 UsernamePasswordAuthenticationToken이라는 인증용 객체를 생성합니다.


AuthenticationManager의 구현체인 ProviderManager에게 

UsernamePasswordAuthenticationToken 객체를 전달합니다.


다시 AuthenticationProvider에 UsernamePasswordAuthenticationToken 객체를 전달합니다.


실제 데이터베이스에서 사용자 인증정보를 가져오는 UserDetailsService에 사용자 정보(아이디)를 넘겨줍니다.


넘겨받은 사용자 정보를 통해 DB에서 찾은 사용자 정보인 UserDetails 객체를 만듭니다. 

이 때 UserDetails 는 인증용 객체와 도메인용 객체를 분리하지 않고 인증용 객체에 상속해서 사용하기도 합니다.


AuthenticationProvider는 UserDetails를 넘겨받고 사용자 정보를 비교합니다.


인증이 완료되면 권한 등의 사용자 정보를 담은 Authentication 객체를 반환합니다.


다시 최초의 AuthenticationFilter에 Authentication 객체가 반환됩니다.


Authentication 객체를 SecurityContext에 저장합니다.


다음글 [JWT🔒] Spring Security Filter

 

[JWT🔒] Spring Security Filter

실제로 스프링 시큐리티는 훨씬 다양한 필터체인을 사용하여 다양한 커스터마이징을 할 수 있도록 돕습니다. SecurityContextPersistentFilter SecurityContextRepository에서 SecurityContext를 가져와서 Securi..

soobindeveloper8.tistory.com


 

728x90
반응형