# AuthenticationProvider

![](https://15316191-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7_opr2RFh9Acog0_8H%2F-MKUZ6XoMFWdO13E94BI%2F-MKUZs_qBjDIRGct87GM%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-10-25%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%208.44.37.png?alt=media\&token=bb98725e-7ea0-49bb-b4c9-3e2f0a870512)

1. AuthenticationProvider도 interface이다.
2. authenticate 메소드에서 인증처리 검증을 한다.
3. supports는 form인증, rememberMe의 처리에 대해 옮바른지 검사를 한다.
4. authenticate(authentication) authentication에는 아이디와 비밀번호가 있다.
5. ID검증은 UserDetailsService라는 SpringSecurity에서 기본적으로 제공해주는 곳에서 처리한다.
6. password검증에서는 암호화된 패스워드에 대한 검증을 한다.
7. 최종적으로 추가검증을 하고 Authentication에 사용자의 정보, 권한 정보를 저장된 인증객체AuthenticationManager에 부여한다.

Filter -> AuthenticationManager -> AuthenticationProvider -> AuthenticationManager -> Filter-> SecurityContext -> Session 의 흐름을 가진다.
