-
[스프링 시큐리티] Authentication Flow강의노트/스프링 시큐리티 2020. 9. 14. 20:57
AuthenticationManager (ProviderManager)
- 사용할 수 있는 AuthenticationProvider 리스트를 멤버 변수로 가지고 있다.
- AuthenticationProvider 리스트에서 현재 인증에 적합한 AuthenticationProvider를 찾아서 인증을 위임한다.
AuthenticationProvider (DaoAuthenticationProvider)
UserDetailsService에 username을 매개변수로 전달하여 UserDetails 정보를 조회한다.
UserDetailsService를 통해서 조회한 User가 존재하는 경우, 해당 User객체의 패스워드와 클라이언트에서 전달 한 패스워드를 일치하는지 검증한다.
패스워드가 일치하지 않으면 BadCredentialsException이 발생한다.
UserDetailsService
- 해당 유저가 존재하는 경우
- AuthenticationProvider로 조회 한 UserDetails 객체를 전달한다.
- 해당 유저가 존재하지 않는 경우
- 해당 유저가 존재하지 않으면 UsernameNotFoundException이 발생한다.
- UsernameNotFoundException 발생 시 UsernamePasswordAuthenticationFilter가 받아서 후속 처리를 하게 된다.
전달 된 username 정보를 가지고 UserDetails 객체 정보를 조회한 후 AuthenticationProvider에 리턴한다.
'강의노트 > 스프링 시큐리티' 카테고리의 다른 글
[스프링 시큐리티] 인증 여부 결정 주체(AuthenticationProvider) (0) 2020.09.23 [스프링 스큐리티] 인증 여부 검증(AuthenticationManager) (0) 2020.09.14 [스프링 시큐리티] SecurityContext 객체 생성, 저장, 조회(SecurityContextPersistenceFilter) (0) 2020.09.14 [스프링 시큐리티] Authentication 객체 저장소(SecurityContext, SecurityContextHolder) (0) 2020.09.14 [스프링 시큐리티] 인증 정보 저장 객체(Authentication) (0) 2020.09.14