Страница входа не разрешена в Spring Security - PullRequest
1 голос
/ 20 января 2020

У меня есть приложение с несколькими конечными точками REST и веб-страницами.

/products    -- REST endpoint
/cutomers    -- REST endpoint
/ui/catalog  -- Web
/ui/admin    -- Web

Я хочу настроить безопасность, чтобы все веб-страницы, начиная с /ui/**, перенаправлялись на страницу входа и все другие (REST) ​​вызывают 401 и WWW-Authenticate.

При следующих настройках страница входа не разрешается, и отправляется 401 с заголовком:

@Configuration
@Order(20)
@RequiredArgsConstructor
class RestConfigurationAdapter extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.requestMatcher(AnyRequestMatcher.INSTANCE)
                .authorizeRequests().anyRequest().fullyAuthenticated();

        httpSecurity.
                requiresChannel().
                requestMatchers(AnyRequestMatcher.INSTANCE).
                requiresSecure();
    }
}

@Configuration
@Order(10)
@RequiredArgsConstructor
class WebUIConfigurationAdapter extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.antMatcher("/ui/**")
                .authorizeRequests().anyRequest().authenticated()
                .and()
                .formLogin().loginPage("/login").permitAll()
                .and()
                .logout().permitAll();
    }
}

Почему это не так? т работаешь? Я ожидаю, что будет перенаправлен на страницу входа (это работает) и страница входа будет 200 (это не работает).

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Редактирование WebUIConfigurationAdapter следующим образом решает проблему:

httpSecurity.requestMatchers()
    .antMatchers("/ui/**", "/login", "/logout")
    .authorizeRequests().anyRequest().authenticated()
    .and()
    .formLogin().loginPage("/login").permitAll()
    .and()
    .logout().permitAll();

URL /login устанавливается на WebUIConfigurationAdapter, поэтому он исключается RestConfigurationAdapter.

Спасибо @PraveenKumarLalasangi за его комментарий.

0 голосов
/ 20 января 2020

Вы пробовали это?

    .authorizeRequests()
    .antMatchers("/ui","/anyUrl")
    .permitAll()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...