IT 서적/Spring Security In Action
ch03 : 스프링 시큐리티 기본 인증 - 2
SH.DevBlog
2023. 12. 28. 14:46
# AuthenticationProvider 활용
- 아래의 소스와 같이 AuthenticationProvider를 구현하여 커스터마이징하게 회원 인증을 수행할 수 있다.
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
String username = authentication.getName() ;
String password = String.valueOf(authentication.getCredentials()) ;
if("john".equals(username) && "12345".equals(password))
return new UsernamePasswordAuthenticationToken(username, password, Arrays.asList()) ;
else
throw new AuthenticationCredentialsNotFoundException("Error !") ;
}
@Override
public boolean supports(Class<?> authentication) {
return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication) ;
}
}
# UserDetails와 UserDetailsService의 활용
- UserDetails 인터페이스는 스프링 시큐리티에서 사용자를 기술하는데 이용되는 계약이다.
- UserDetailsService 인터페이스는 애플리케이션이 사용자 세부 정보를 얻는 방법을 설명하기 위해 스프링 시큐리티의 인증 아키텍처에서 구현해야 하는 계약이다.
- UserDetails 활용하기
- UserDetails는 Spring Security에서 사용자의 부가적인 정보를 관리하는 인터페이스이다.
- UserDetailsManager 인터페이스는 UserDetailsService를 활장하고 사용자 생성, 변경, 삭제와 관련된 동작을 수행한다.
- 스프링 리큐리티는 UserDetailsManager의 여러 가지 구현을 제공한다. InMemoryUserDetailManager, JdbcUserDetailsManager, LdapUserDetailsManager가 있다.