4
respostas

autenticação via Basic não funciona

Estou tentando implementar uma autenticação por basic autentication mas sempre recebo o código 403 forbiden. Nesse exemplo liberei para o spring aceitar qualquer request mas mesmo assim eu recebo o código 403.

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        .anyRequest().permitAll();

    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        // TODO Auto-generated method stub
        super.configure(auth);
    }
}
4 respostas

Oi Aguinaldo,

Remove a linha do super.configure(auth);, pois ao chamar o super você volta a configuração padrão do Spring Security de bloquear.

Olá professor consegui avançar com essa dica sua obrigado, mas ainda estou tendo um problema somente com o metodo post, pode me ajudar prf? Dei uma alterada na classe, segue o código.

@Configuration
@EnableWebSecurity
public class BasicConfigurationSecurity extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .authorizeRequests()
            .anyRequest().authenticated()
        .and()
        .httpBasic()
        .and()
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
    ;

    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
        .withUser("alexandre").password("123").roles("ADMIN")
        .and()
        .withUser("admin").password("admin").roles("ADMIN")
    ;
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return NoOpPasswordEncoder.getInstance();
    }
}

Segue o metodo do controller

@RestController
@RequestMapping("/beneficiarios")
public class BenefController {

    @Autowired
    private BeneficiarioRepository beneficiarioRepository;

    @GetMapping
    public List<Beneficiario> lista() {
            List<Beneficiario> beneficiarios = beneficiarioRepository.retornabeneficiario();
            return beneficiarios;
    }

    @PostMapping
    public void consumindoPackge(@RequestBody PackgeId packgeid) {
            System.out.println("-----------ID = " + packgeid.getPackgeid());
                beneficiarioRepository.executaAutorizacao(packgeid.getPackgeid());

    }}

Qual o problema que está tendo?

Quando eu tendo acessar o método @GetMapping do controller (public List lista()) eu consigo com sucesso, já quando eu tento acessar o método@PostMapping (public void consumindoPackge) eu recebo sempre o 401 Unauthorized. Já conferi o login e senha no Postman.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software