복붙노트

[SPRING] Spring 보안 및 Java 구성을 사용하는 사용자 정의 인증 공급자

SPRING

Spring 보안 및 Java 구성을 사용하는 사용자 정의 인증 공급자

Java Configurations와 함께 Spring Security를 ​​사용하여 사용자 정의 인증 공급자를 정의하려면 어떻게합니까? 내 자신의 데이터베이스에서 로그인 확인 자격 증명을 수행하고 싶습니다.

해결법

  1. ==============================

    1.다음은 필요한 것입니다 (CustomAuthenticationProvider는 Spring에서 관리해야하는 구현입니다)

    다음은 필요한 것입니다 (CustomAuthenticationProvider는 Spring에서 관리해야하는 구현입니다)

    @Configuration
    @EnableWebMvcSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Autowired
        private CustomAuthenticationProvider customAuthenticationProvider;
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            /**
             * Do your stuff here
             */
        }
    
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth.authenticationProvider(customAuthenticationProvider);
        }
    }
    
  2. ==============================

    2.baeldung.com에 표시된 것처럼 인증 공급자를 다음과 같이 정의하십시오.

    baeldung.com에 표시된 것처럼 인증 공급자를 다음과 같이 정의하십시오.

    @Component
    public class CustomAuthenticationProvider implements AuthenticationProvider {
    
        @Override
        public Authentication authenticate(Authentication authentication) 
          throws AuthenticationException {
    
            String name = authentication.getName();
            String password = authentication.getCredentials().toString();
    
            if (shouldAuthenticateAgainstThirdPartySystem(username, password)) {
    
                // use the credentials
                // and authenticate against the third-party system
                return new UsernamePasswordAuthenticationToken(
                  name, password, new ArrayList<>());
            } else {
                return null;
            }
        }
    
        @Override
        public boolean supports(Class<?> authentication) {
            return authentication.equals(
              UsernamePasswordAuthenticationToken.class);
        }
    }
    

    다음 코드는 해당 Java config입니다.

    @Configuration
    @EnableWebSecurity
    @ComponentScan("org.project.security")
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Autowired
        private CustomAuthenticationProvider authProvider;
    
        @Override
        protected void configure(
          AuthenticationManagerBuilder auth) throws Exception {
    
            auth.authenticationProvider(authProvider);
        }
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().authenticated()
                .and()
                .httpBasic();
        }
    }
    
  3. from https://stackoverflow.com/questions/22606751/custom-authentication-provider-with-spring-security-and-java-config by cc-by-sa and MIT license