Безопасность загрузки Spring не перенаправляет вызовы oauth/authorize в методе configure (HttpSecurity http)

Я настраиваю новый сервер, поэтому я нахожусь на том этапе, когда мне нужно настроить сервер, чтобы разрешить доступ к некоторым URL-адресам без аутентификации, и у меня возникают некоторые проблемы. Все работает нормально, кроме /oauth/authorize, потому что при последнем действии при вводе учетных данных страница не перенаправляется и остается на той же странице.

Я попробовал следующий код, который позволяет мне получать доступ к URL-адресам без какой-либо аутентификации, но перенаправление /oauth/authorize не работает.

@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {

      http.authorizeRequests()
        .antMatchers("/oauth/token", "/oauth/authorize**", "/login**", "/user/recover_password", "/user/register").permitAll()
        .anyRequest().authenticated()
        .and()
        .formLogin()
        .and()
        .logout().logoutUrl("/oauth/logout")
        .and()
        .csrf().disable();
    }
}

Итак, как я уже сказал, мне нужно получить доступ к этим URL-адресам без аутентификации, а также иметь возможность перенаправить на /oauth/authorize, чтобы иметь возможность войти в систему с некоторыми внешними ресурсами. Но что я получаю, так это то, что когда я ввожу свои учетные данные, страница остается на той же странице.

можете ли вы попробовать добавить фильтр, например addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

Praveen E 07.04.2019 20:03

Можете ли вы предоставить мне больше информации, пожалуйста?

Mellao 07.04.2019 20:24
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
135
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, наконец, я нашел исправление, и теперь оно работает, добавляя sessionManagement, хотя я точно не знаю, почему.

Я добавил следующий код:

        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
        .and()

Итак, полный метод должен выглядеть так:

public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {

      http.
      .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
        .and()
        .authorizeRequests()
        .antMatchers("/oauth/token", "/oauth/authorize**", "/login**", "/user/recover_password", "/user/register").permitAll()
        .anyRequest().authenticated()
        .and()
        .formLogin()
        .and()
        .logout().logoutUrl("/oauth/logout")
        .and()
        .csrf().disable();
    }
}

Теперь /oauth/authorize работает должным образом, и мои общедоступные URL-адреса также доступны без аутентификации.

Итак, на данный момент, если кто-нибудь может объяснить, что делает sessionManagement, это будет хорошо.

Другие вопросы по теме