반응형
- UsernamePasswordAuthenticationFilter 란-
UsernamePasswordAuthenticationFilter란 Form based Authentication 방식으로 인증을 진행할 때 아이디, 패스워드 데이터를 파싱하여 인증 요청을 위임하는 필터이다.
쉽게 설명하자면 유저가 로그인 창에서 Login을 시도할 때 보내지는 요청에서 아이디(username)와 패스워드(password) 데이터를 가져온 후 인증을 위한 토큰을 생성 후 인증을 다른 쪽에 위임하는 역할을 하는 필터이다.
Spring Boot 기반의 HttpSecurity를 설정하는 코드에서 http.formLogin(); 을 사용하면 시큐리티에서는 기본적으로 UsernamePasswordAuthenticationFilter 을 사용하게 된다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin();
}
이때 사용되는 UsernamePasswordAuthenticationFilter의 코드를 보면 아래와 같다.
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
if (this.postOnly && !request.getMethod().equals("POST")) {
throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
} else {
String username = this.obtainUsername(request);
username = username != null ? username : "";
username = username.trim();
String password = this.obtainPassword(request);
password = password != null ? password : "";
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);
this.setDetails(request, authRequest);
return this.getAuthenticationManager().authenticate(authRequest);
}
}
request안에서 username, password 파라미터를 가져와서 UsernamePasswordAuthenticationToken 을 생성 후 AuthenticationManager을 구현한 객체에 인증을 위임한다.
UsernamePasswordAuthenticationFilter의 로직을 그림으로 나타내면 아래와 같은 형태로 로직이 흘러간다.
반응형
'Spring > spring security' 카테고리의 다른 글
Spring Security - RememberMeAuthenticationFilter 란 (0) | 2021.09.10 |
---|---|
Spring Security - LogoutFilter 란 (0) | 2021.09.10 |
Spring Security UserDetails, UserDetailsService 란? - 삽질중인 개발자 (0) | 2021.02.14 |
spring security DB를 이용한 로그인 구현 3 ( 로그아웃 하기 ) - 삽질중인 개발자 (0) | 2020.03.29 |
스프링 시큐리티 DB를 이용한 로그인 구현 2 ( ajax 로그인 ) - 삽질중인 개발자 (3) | 2020.03.28 |