Częściowe zabezpieczenie REST API ze springiem security

0

Witam,

pracuję obecnie nad zabezpieczeniem API ze springiem security. URLe ze słowem kluczowym public mają być odbezpieczone, natomiast, ze słowem kluczowym private mają być zabezpieczone z basic auth. O to, w jaki sposób próbowałem to osiągnąć:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    private final static RequestMatcher PUBLIC_API_REQUEST_MATCHER = request -> request.getRequestURI().contains(ApiAccess.PUBLIC_API);
    private static final RequestMatcher PRIVATE_API_REQUEST_MATCHER = request -> request.getRequestURI().contains(ApiAccess.PRIVATE_API);

    @Configuration
    @Order(2)
    public static class SecuredApisConfiguration extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .requestMatchers(PRIVATE_API_REQUEST_MATCHER)
                    .authenticated()
                    .and()
                    .httpBasic();
        }
    }

    @Configuration
    @Order(1)
    public static class UnsecuredApisConfiguration extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .requestMatchers(PUBLIC_API_REQUEST_MATCHER)
                    .permitAll();
        }
    }
}

Jednak w tym przypadku wszystkie są odbezpieczone. Próbowałem rownież używając jednego przeciążenia metody configure i po prostu po and() dodawałem co ma być zabezpieczone, a co nie. Oba podejścia powodują, że albo wszystkie API są zabezpieczone, albo odwrotnie. Próbowałem również różnych orderów.

Ma ktoś jakiś pomysł jak coś takiego osiągnąć?

Pozdrawiam,
Dreando.

1
http.authorizeRequests().antMatchers("/api-docs", "/api-docs/**/*", "/api", "/swagger/**/*").permitAll()
.anyRequest().authenticated().and().httpBasic()

Wpuszczam na Api i wymagam logowania na reszte

0

Zadziałało, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1