Multi-tenancy com SpringBoot e Security

0 respostas
springjava
B

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

Criado 11 de fevereiro de 2019
Respostas 0
Participantes 1