Bom dia pessoal!
Ao implementar a segurança na API, o h2 está pedindo login e senha para funcionar (uso o IntelliJ e preciso ficar alimentando o banco para os testes).
Ocorre que o spring só me forneceu a senha. Como devo proceder nesse caso?
Bom dia pessoal!
Ao implementar a segurança na API, o h2 está pedindo login e senha para funcionar (uso o IntelliJ e preciso ficar alimentando o banco para os testes).
Ocorre que o spring só me forneceu a senha. Como devo proceder nesse caso?
Oi Renato,
Dá uma olhadinha nesse tópico que explico como liberar o console do H2 para acesso: https://cursos.alura.com.br/forum/topico-erro-acesso-ao-h2-87746
Bom dia professor!
Na verdade minha dúvida era já no primeiro momento quando implementamos a segurança. Lá o h2 já acaba perdendo o acesso. Mas acabei optando por continuar o curso assim mesmo e testar agora após implementar o JWT. Inclui o código sugerido, no entanto, ele apresenta duas reclamações. Na linha ".and().addFilterBefore(new AutenticacaoFilter(tokenService, autenticacaoService), UsernamePasswordAuthenticationFilter.class)" AutenticacaoFilter e tokenService ficam em vermelho. Será que preciso criar ou importar algo? Segue o código inteiro para análise:
package com.ganske.forum.config.security;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@EnableWebSecurity
@Configuration
public class SecurityConfigurations extends WebSecurityConfigurerAdapter {
@Autowired
private AutenticacaoService autenticacaoService;
@Override
@Bean
protected AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
}
//Configuracoes de Autenticacao
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(autenticacaoService).passwordEncoder(new BCryptPasswordEncoder());
}
//Configuracoes de Autorizacao
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.GET, "/topicos").permitAll()
.antMatchers(HttpMethod.GET, "/topicos/*").permitAll()
.antMatchers("/h2-console/**").permitAll()
.anyRequest().authenticated()
.and().csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().headers().frameOptions().sameOrigin()
.and().addFilterBefore(new AutenticacaoFilter(tokenService, autenticacaoService), UsernamePasswordAuthenticationFilter.class)
;
}
//Configuracoes de Recursos Estaticos(JS, Css, imgs, etc)
@Override
public void configure(WebSecurity web) throws Exception {
}
public static void main(String[] args) {
System.out.println(new BCryptPasswordEncoder().encode("123456"));
}
}
Posta aqui também o código da sua classe AutenticacaoFilter
Essa classe não está criada ainda, vou seguir mais um pouco do curso então!
Olá professor!
Segui o curso e cheguei na fase de implementação dos filtros. Os erros saíram, mas agora estou perdido de como proceder para fazer os testes. Desde a implementação da primeira parte da segurança (capítulo 3), não consigo mais fazer os testes porque o H2 ficou "bloqueado". No entanto, agora com o curso mais avançado, estou perdido na sequência que devo proceder, para conseguir fazer os devidos testes.
É importante lembrar que, como usarei o IntelliJ no trabalho, estou trabalhando com esse IDE, então os acessos ao H2 e a carga de dados nele, é toda feito pelo próprio H2, o qual estou sem acesso ainda.
Oi Renato,
Então, os dados iniciais são inseridos no h2 pelo arquivo data.sql e depois mais informações podem ser inseridas pela própra API, com ostestes via Postman.
O bloqueio seria apenas para acessar diretamente o banco de dados h2.