0

Esse é meu filtro. Uso gradlew, openApi para gerenciar a geração de classe, e como segurança API KEY, passando as credenciais no cabeçalho da request.

`@Configuration @EnableWebSecurity public class SoarSecurityConfiguration {

private static final Logger logger = LoggerFactory.getLogger(SoarSecurityConfiguration.class);

private final AuthenticationEntryPointException authenticationEntryPointException;

private final SoarApiKeyAuthenticationProvider apiKeyAuthenticationProvider;

@Autowired
public SoarSecurityConfiguration(final AuthenticationEntryPointException authenticationEntryPointException,
                                 final SoarApiKeyAuthenticationProvider apiKeyAuthenticationProvider) {
    this.authenticationEntryPointException = authenticationEntryPointException;
    this.apiKeyAuthenticationProvider = apiKeyAuthenticationProvider;
}

@Bean
public SecurityFilterChain soarSecurityFilterChain(HttpSecurity httpSecurity) throws Exception {
    httpSecurity
            .formLogin(AbstractHttpConfigurer::disable)
            .cors(AbstractHttpConfigurer::disable)
            .csrf(AbstractHttpConfigurer::disable)
            .servletApi(httpSecurityServletApiConfigurer -> httpSecurityServletApiConfigurer.configure(httpSecurity))
            .authorizeHttpRequests(authorize -> authorize
                    .requestMatchers("/").permitAll()
                    .requestMatchers("/actuator/health").permitAll()
                    .requestMatchers("/actuator/health/liveness").permitAll()
                    .requestMatchers("/actuator/health/readiness").permitAll()
                    //.requestMatchers("/rest/**").permitAll()
                    .anyRequest().authenticated())
            .exceptionHandling(exceptionHandling -> exceptionHandling.authenticationEntryPoint(authenticationEntryPointException))
            .sessionManagement(sessionManager -> sessionManager.sessionCreationPolicy(SessionCreationPolicy.STATELESS));

    logger.info("SecurityConfiguration Configure HttpSecurity done.");
    return httpSecurity.build();
}`

Uso o API KEY como Authorization, passando no cabeçalho a chave e o valor de autenticação do método. resposta no postaman { "title": "Access denied", "detail": "Full authentication is required to access this resource", "type": "https://www.httpstatus.com.br/403/", "status": 403, "code": 2034, "instance": "/lite-soar/rest/orgs/000/incidents/incidents/23/tasks", "violations": [] }

  • Após alguns dias passando perrengue! o Jr aqui conseguil resolver esse problema. Como resolvi: a Sintax no java 17 foi alterada em algumas classes e com isso o meu codigo não quebrava , mais também não funcionava. Deixei os metodos que me deram erro publicos e adicionei uma permição para os demais. Então mesmo sendo um metodo publico, se o usuário não estiver autenticado ele não terá acesso. – Joanatas Barbosa Jul 06 '23 at 13:00

0 Answers0