AuthenticationProvider
실질적으로 인증처리를 하는 핵심 클래스로 Interface 이다.
AuthenticaionProvider를 구현하여 서비스에 맞는 인증방식을 만드는 것이 주를 이룬다.
- 재정의 할 메서드
-
boolean support(authentication) : 조건의 기준 검사.
-
Authentication authenticate(authentication) : 실질적 인증처리를 위한 검증
매개 값으로는 username , password 를 가진 Authentication 객체를 가진다.
흐름 구조를 알면 메서드 재정의 방식을 이해할 수 있을듯 하다.
-
authenticate(authentication) 에서 username 검증을 위해 UserDetailsService 호출 , 영속 영역에서 정보를 끌어 옴
-
맞는 User 정보가 있다면 UserDetails 타입의 User 객체 리턴, 정보가 없다면 UserNameNotFoundException 발생
-
UserDetails 타입의 객체를 리턴받았을 때 Password는 PasswordEncoder에 의해 암호화 되어있어 다시 PasswordEncoder 로 해석주게 된다. password 검증을 시작, 검증에 실패하면 BadCredentialException 발생
-
password 검증도 완료되었을 시에 추가정보에 대한 검증 실행
-
검증이 완료되었다면 Authentication 타입 객체에 User타입(UserDetails) 객체와 authorities(권한정보) 를 저장하여 AuthenticationManager에 리턴
**별도의 User 객체가 필요하다면 UserDetails 인터페이스를 구현해야 함
'springframework > 시작하자SpringSecurity' 카테고리의 다른 글
23.AccessDesicionManager, AccessDecisionVotor (0) | 2020.09.22 |
---|---|
22.Authorization, FilterSecurityInterceptor (0) | 2020.09.22 |
20.AuthenticationMananger를 구현한 ProviderManager (0) | 2020.09.22 |
19.Authentication Flow (0) | 2020.09.22 |
18.인증 저장소 필터 , SecurityContextPersistenceFilter (0) | 2020.09.22 |