Я настраиваю новый сервер, поэтому я нахожусь на том этапе, когда мне нужно настроить сервер, чтобы разрешить доступ к некоторым 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, чтобы иметь возможность войти в систему с некоторыми внешними ресурсами. Но что я получаю, так это то, что когда я ввожу свои учетные данные, страница остается на той же странице.
Можете ли вы предоставить мне больше информации, пожалуйста?
Итак, наконец, я нашел исправление, и теперь оно работает, добавляя 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, это будет хорошо.
можете ли вы попробовать добавить фильтр, например addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);