springframework/시작하자SpringSecurity

21.AuthenticationProvider

Jungsoomin :) 2020. 9. 22. 20:31

AuthenticationProvider

 

실질적으로 인증처리를 하는 핵심 클래스Interface 이다. 

 

AuthenticaionProvider구현하여 서비스에 맞는 인증방식을 만드는 것이 주를 이룬다.

 

  • 재정의 할 메서드
  1. boolean support(authentication) : 조건의 기준 검사.

  2. Authentication authenticate(authentication) : 실질적 인증처리를 위한 검증

매개 값으로는 username , password 를 가진 Authentication 객체를 가진다.

 


흐름 구조를 알면 메서드 재정의 방식을 이해할 수 있을듯 하다.

 

 

  1. authenticate(authentication) 에서 username 검증을 위해 UserDetailsService 호출 , 영속 영역에서 정보를 끌어 옴

  2. 맞는 User 정보가 있다면 UserDetails 타입의 User 객체 리턴, 정보가 없다면 UserNameNotFoundException 발생

  3. UserDetails 타입의 객체를 리턴받았을PasswordPasswordEncoder에 의해 암호화 되어있어 다시 PasswordEncoder 로 해석주게 된다. password 검증을 시작, 검증에 실패하면 BadCredentialException 발생

  4. password 검증도 완료되었을 시에 추가정보에 대한 검증 실행

  5. 검증이 완료되었다면 Authentication 타입 객체에 User타입(UserDetails) 객체와 authorities(권한정보) 를 저장하여 AuthenticationManager에 리턴


**별도의 User 객체가 필요하다면 UserDetails 인터페이스를 구현해야 함