Boa Tarde, desde já agradeço a atenção de todos, e me perdoem caso haja alguma ignorância, mais estou vasculhando em todos os cantos e em exemplos algo que resolva meu problema e não entcontro nenhuma solução.
Meu cenário é o seguinte tenho uma aplicação utilizando Spring Boot 2, e de acordo com o que recebo no Header da requisição escolho qual banco quero utilizar, até ai funciona tudo tranquilo, só que agora adicionei o security com jwt, e ele sempre procura o usuário no banco master, não no dataSource que eu passo, segue abaixo a classe de configuração:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
@Autowired
private JwtAuthenticationEntryPoint unauthorizedHandler;
@Bean
public JwtAuthenticationFilter jwtAuthenticationFilter() {
return new JwtAuthenticationFilter();
}
@Override
public void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder.jdbcAuthentication().dataSource(dataSource).passwordEncoder(passwordEncoder())
.usersByUsernameQuery("select user_name as userName, password, enabled from users where user_name=?")
.authoritiesByUsernameQuery("select user_name as userName, roles.name "
+ " from users inner join user_roles on users.id = user_roles.user_id"
+ " inner join roles on user_role.id_role = roles.id" + "where users.user_name=?");
}
@Bean(BeanIds.AUTHENTICATION_MANAGER)
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// Add our custom JWT security filter
http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
http.cors().and().csrf().disable().exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests()
.antMatchers("/", "/favicon.ico", "/**/*.png", "/**/*.gif", "/**/*.svg", "/**/*.jpg", "/**/*.html",
"/**/*.css", "/**/*.js")
.permitAll().antMatchers("/api/auth/**").permitAll()
.antMatchers("/api/user/checkUsernameAvailability", "/api/user/checkEmailAvailability").permitAll()
.antMatchers(HttpMethod.GET, "/api/users/**").permitAll().antMatchers("/api/master/**").permitAll()
.antMatchers(HttpMethod.GET, "/login/google/**").permitAll().anyRequest().authenticated();
}
ai ele da um erro falando que não exite a tabela user na tabela master, não no datasource