2013年1月22日 星期二

Interview Spring Security



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