Spring Security的設計如diagram所示:
- 每個Filter都會有一個能處理的Authentication type,從request取得資料後生出Authentication instance,然後傳給AuthenticationManager進行驗證。
- Spring Security預設只提供一個ProviderManager實作了AuthenticationManager介面。
- ProviderManager會依序將Authentication傳給AuthenticationProvider進行驗證。
- Spring Security實作的AuthenticationProvider大多都可以傳入UserDetailsService,以方便在通過身分驗證後取得使用者權限,在實作上我們會reuse UserDetailsService instance,如sequence diagram中的UserDetailsServiceImpl就被DaoAuthenticationProvider、LdapAuthenticationProvider、CasAuthenticationProvider所使用。
PS:Sequence diagram省略了org.springframework.security.web.FilterChainProxy和ProviderManager。