22년 09월 04일 작성글
//메타코딩 시큐리티 강의 코드
UsernamePasswordAuthenticationToken authenticationToken =
new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword());
UsernamePasswordAuthenticationFilter
에서 Id + Password를 담은 인증 객체(Authentication
)를 생성//메타코딩 시큐리티 강의 코드
Authentication authentication =
authenticationManager.authenticate(authenticationToken);
AuthenticationManager
에게 인증객체를 넘기며 인증 처리를 위임한다.
인증 관리자(AuthenticationManager
)는 적절한 Provider(AuthenticationProvider
)에게 인증 처리를 위임
AuthenticationManager
- 인증 관리자 : 인터페이스이다.
ProviderManager
: AuthenticationManager
- 인증 관리자의 구현체이다.
인증 관리자(AuthenticationManager
)는 필터로부터 인증 처리를 지시 받으면 가지고 있는
인증 처리자(AuthenticationProvider
)들 중에서 현재 인증처리를 할 수 있는 Provider에게 인증 처리를 위임하여
인증 처리 수행 후 인증이 성공한다면 반환받은 인증 객체를 필터로 전달한다.
AuthenticationProvider
는 인터페이스이다. 다음 두 개의 메서드를 제공한다.
authenticate(authentication) : 실제적인 인증 처리를 위한 검증 메서드
supports(authentication) : 인증처리가 가능한 Provider 인지 검사하는 메서드
두 개의 메서드는 사용자가 입력한 아이디와 패스워드가 들어간 authentication 객체를 가지고 로직을 수행한다.
인증 관리자(AuthenticationManager)는 이제 Password 검증
SecurityContext에 저장
//객체 반환 - Authentication 객체가 session영역에 저장된다.
return authentication;
참고한 글: songs4805블로그 시큐리티 아키텍쳐
UsernamePasswordAuthenticationFilter
에서 인증 성공/실패 여부에 따라 successfulAuthentication
, unsuccessfulAuthentication
메소드가 호출된다.
인증이 성공적으로 완료되었을 경우에 SecurityContextHolder
에 저장하고, successHandler
를 호출한다고 되어있다.
successHandler
에서는 지정된 경로로 redirect하기때문에 doFilter
를 할 필요가 없다고 되어있다.
설명이 부족해서 레퍼런스 글을 읽으려 했으나 삭제되어있어서 못봤다.
다른 글을 찾아보려했는데 dofilter
에 관한 내용이 없어서 아직 정확히는 모르겠다.