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가 있다.