개발놀이터

면접 준비 : 스프링 시큐리티 본문

CS 지식/면접준비

면접 준비 : 스프링 시큐리티

마늘냄새폴폴 2023. 6. 1. 03:27

Q. 스프링 시큐리티의 동작 방식에 대해서 설명해주세요.
A. 먼저 Proxy Chain Filter가 필터를 만듭니다. 그리고 프록시로 생성된 필터가 request를 인터셉트합니다. 인터셉트한 request로 인증을 진행하고 인증이 끝나면 Security Context를 업데이트합니다. 업데이트함과 동시에 인가가 진행되고 Exception을 핸들링 한 다음 사용자의 요청을 핸들링합니다. 

Q. 스프링 시큐리티의 인증 방식에 대해서 설명해주세요.
A. 먼저 request와 걸맞는 필터가 작동합니다. form 형식의 request는 UsernamePassowrdAuthenticationFilter가 작동하고 OAuth 2.0의 형식은 OAuthLoginAuthenticationFilter가 작동합니다. 그리고 UsernamePasswordAuthenticationToken을 생성해서 이 토큰을 처리할 수 있는 AuthenticationManager (실제 구현체는 ProviderManager) 에게 토큰을 전달합니다. AuthenticationManager는 AuthenticationProvider에게 토큰을 넘기고 적절한 Provider를 선택해서 사용합니다. 이 때 Authentication 객체가 생성되고 이 Authentication 객체를 Security Context에 전달합니다. 마지막으로 Security Context Holder는 ThreadLocal을 사용해서 Thread safe하게 Authentication 객체를 관리합니다.