Wpis z mikrobloga

Pytanie do koksów z #java i #spring

Mam zrobioną autoryzacje po JWT.
Teoretycznie filtr powinien działać tylko na ścieżki /api** ale działa na wszystko, nie tylko na api...
Ktoś potrafi powiedzieć co jest nie tak i jak poprawić?
Póki co nie mogę np odpalić Swagger'a bo krzyczy mi z filtru, że Authorization header cannot be blank, a to jest komunikat z filtru JWTAuthFilter, który nawet nie powinien zostać wywołany przy ścieżce localhost/swagger-ui.html

public static final String TOKENBASEDAUTHENTRYPOINT = "/api/";
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.addFilterBefore(new CORSFilter(), ChannelProcessingFilter.class)
.exceptionHandling()
.authenticationEntryPoint(this.restAuthEntryPoint)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "
").permitAll()
.antMatchers(FORMBASEDREGISTRATIONENTRYPOINT).permitAll()
.antMatchers(FORMBASEDLOGINENTRYPOINT).permitAll()
.and()
.authorizeRequests()
.antMatchers(TOKENBASEDAUTHENTRYPOINT).authenticated()
.and()
.addFilterBefore(buildJWTLoginFilter(), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(buildJWTAuthFilter(), UsernamePasswordAuthenticationFilter.class);
}

#programowanie
  • 15
@interface:

import com.fasterxml.jackson.databind.ObjectMapper;
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.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
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.crypto.password.PasswordEncoder;
import org.springframework.security.web.access.channel.ChannelProcessingFilter;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import pl.eparafie.server.security.ajax.AjaxAuthProvider;
import pl.eparafie.server.security.filter.AjaxLoginFilter;
import pl.eparafie.server.security.filter.JWTAuthFilter;
import pl.eparafie.server.security.jwt.*;

import java.util.Arrays;
import java.util.List;

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

public static final String FORMBASEDLOGINENTRYPOINT = "/api/auth/login";
public static final
@interface: ciekawe, bo tak, przynajmniej póki co nic nie pada.
Ten fragment wykomentowany, ale problem jak był tak jest nadal - error z pustymi nagłówkami autoryzacji na wszystkich ścieżkach,także poza /api/
@interface: @Godziu73: otoz w filtrze ktory robilem na podstawie przykladow, byla nadpisana funkcja requiresAuthentication, ktora nie do konca rozumiem, ale w kilku przykladach z roznych stron, w tym filtrze byla nadpisana z 'return true'. Usunalem to. Teraz filtr dziala tylko tam gdzie powinien.