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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.