2017-02-18 14 views
0

Basic Authを使用してエンドポイントを保護したい。Spring、データベースによる認証

正しいユーザー名とパスワードでログインしようとすると、すべてが機能しています。

私の問題は、私が間違ったユーザー名またはパスワードでログインしようとするということである - 私が取得:

java.lang.StackOverflowError: null 
    at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter$UserDetailsServiceDelegator.loadUserByUsername(WebSecurityConfigurerAdapter.java:442) ~[spring-security-config-4.2.1.RELEASE.jar:4.2.1.RELEASE] 

私はそれを解決することができますか?

SecurityConfig.java 

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    private static final String AUTHORITIES_QUERY = "SELECT u.username, r.role FROM user u " + 
                "INNER JOIN user_role ur ON u.id = ur.user_id " + 
                "INNER JOIN role r ON ur.role_id = r.id " + 
                "WHERE u.username=?"; 

    private static final String USERS_QUERY = "SELECT username, password, is_active FROM user WHERE username=?"; 

    @Autowired 
    private DataSource dataSource; 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
      .jdbcAuthentication() 
       .usersByUsernameQuery(USERS_QUERY) 
       .authoritiesByUsernameQuery(AUTHORITIES_QUERY) 
       .dataSource(dataSource).and() 
      .userDetailsService(userDetailsService()); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .sessionManagement() 
       .sessionCreationPolicy(SessionCreationPolicy.STATELESS) 
       .and() 
      .authorizeRequests() 
       .antMatchers("/").permitAll() 
       .antMatchers("/user").hasAuthority("USER") 
       .antMatchers("/admin").hasAuthority("ADMIN") 
       .anyRequest().fullyAuthenticated() 
       .and() 
      .httpBasic().and() 
      .csrf() 
       .disable(); 
    } 

} 
+0

body for 'userDetailsS​​ervice()' –

答えて

関連する問題