Git :)

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ch03 : 스프링 시큐리티 기본 인증 - 2
    IT 서적/Spring Security In Action 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가 있다.