1
resposta

[Dúvida] Há como pular ou desabilitar a autenticação (user e senha) do código ?

Estou fazendo a parte de segurança de um site e queria que a opção de autenticação (user e senha) não estivessem, pois é uma página pública. Tentei pular/ desabilitar e ir para a autorização. Usando o .anyRequest().permitAll . Mas não funcionou, há uma forma de funcionar a Spring security sem a primeira autenticação ? Teria que criar uma autorização para aceitar request vindasde um único Ip ?

código:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(authorize -> authorize
                .anyRequest().permitAll() 
            )
            .cors(cors -> cors
               
            )
            .csrf(csrf -> csrf
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())  
            )
            .headers(headers -> headers
                .xssProtection(xss -> xss.block(true))  // Proteção contra ataques de XSS
                .contentSecurityPolicy(csp -> csp.policyDirectives("script-src 'self'"))  
                .frameOptions(frameOptions -> frameOptions.sameOrigin())  // Proteção contra ataques de clickjacking
            );

        return http.build();
    }
}
1 resposta

Oi Izabelle! Tudo joia?

Para desabilitar a autenticação de todas as rotas, você precisa especificar todas as rotas que você quer que não sejam barradas pelo Spring Security.

Por exemplo:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(authorize -> authorize
                .requestMatchers("/rota1", "/rota2", "/rota3").permitAll() // Libera as três rotas especificadas
                .anyRequest().authenticated() // As demais rotas exigem autenticação
            )
            .cors(cors -> cors)
            .csrf(csrf -> csrf
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
            )
            .headers(headers -> headers
                .xssProtection(xss -> xss.block(true)) 
                .contentSecurityPolicy(csp -> csp.policyDirectives("script-src 'self'"))
                .frameOptions(frameOptions -> frameOptions.sameOrigin())  
            );

        return http.build();
    }
}

No exemplo acima defini todas as rotas que eu queria acessar sem que a autenticação fosse realizada, então, dessa forma é como você pode fazer o processo de liberação das rotas. Até onde sei não existe uma forma mais direta, além de retirar o modulo do Spring Security do projeto.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.