728x90
- AuthenticationProvider 인터페이스 구현
-
인증 작동 조건
- supports(Class<?> authentication)
- ProviderManager 로부터 넘어온 인증 객체가 AjaxAuthenticationTokenAjaxAuthenticationToken 타입이면 작동
- supports(Class<?> authentication)
- 인증 검증이 완료되면 AjaxAuthenticationToken 생성하여 최종 인증 객체 반환
- AjaxAuthenticationProvider
-
public class AjaxAuthenticationProvider implements AuthenticationProvider { @Autowired private UserDetailsService userDetailsService; @Autowired private PasswordEncoder passwordEncoder; @Override @Transactional public Authentication authenticate(Authentication authentication) throws AuthenticationException { String username = authentication.getName(); String password = (String) authentication.getCredentials(); //authentication에서 입력한 값을 가지고 올수 있다. AccountContext accountContext = (AccountContext)userDetailsService.loadUserByUsername(username); if(!passwordEncoder.matches(password, accountContext.getAccount().getPassword())){ throw new BadCredentialsException("BadCredentialsException"); //패스워드 일치 X } AjaxAuthenticationToken ajaxAuthenticationToken = new AjaxAuthenticationToken(accountContext.getAccount(), null, accountContext.getAuthorities()); return ajaxAuthenticationToken; } @Override public boolean supports(Class<?> authentication) { //AjaxAuthenticationToken인지 확인 return authentication.equals(AjaxAuthenticationToken.class); } } - 인증이 성공하면 AjaxAuthenticationToken을 반환하도록 구현
- supports 함수에서 AjaxAuthenticationToken이 맞는지를 확인한다.
-

Configure에서 내 providier를 빈으로 등록한다. 
현재 반환값 - 현재는 Suceess Handler가 Ajax용으로 구현이 되어있지 않기 때문에 body에 아무런 값이 없어 이러한 응답을 한다.
728x90
'스프링 시큐리티 > 실전프로젝트 - 인증 프로세스 Ajax 인증 구현' 카테고리의 다른 글
| ch06. Ajax Custom DSLs 구현하기 (0) | 2022.01.21 |
|---|---|
| ch05. 인증 및 인가 예외 처리 - AjaxLoginUrlAuthenticationEntryPoint, AjaxAccessDeniedHandler (0) | 2022.01.21 |
| ch04. 인증 핸들러 - AjaxAuthenticationSuccessHandler, AjaxAuthenticationFailureHandler (0) | 2022.01.20 |
| ch02. 인증 필터 - AjaxAuthenticationFilter (0) | 2022.01.20 |
| ch01. 흐름 및 개요 (0) | 2022.01.20 |