Spring Oauth2 с веб-безопасностью

#spring-security #spring-boot #spring-security-oauth2 #oauth2 #spring-oauth2

#spring-безопасность #весенняя загрузка #spring-security-oauth2 #oauth-2.0 #spring-oauth2

Вопрос:

Я пытаюсь настроить Spring OAuth2 и использую пользовательский WebSecurityConfigurerAdapter (@EnableWebSecurity).

В качестве основы я скопировал следующие два проекта:

Это работает, как и ожидалось, из коробки.

Но, когда я пытаюсь добавить WebSecurityConfigurerAdapter с помощью @EnableWebSecurity на автосервер (ванильный), происходит сбой.

Я получаю сбой аутентификации: не удалось получить токен доступа при перенаправлении обратно после входа в систему и авторизации на странице входа в систему клиента.

Я настроил security.oauth2.resource.userInfoUri, который отлично работал без WebSecurityConfigurerAdapter.

Есть идеи, как настроить oauth2 с помощью WebSecurityConfigurerAdapter?

Комментарии:

1. какую защиту OAuth2 вы пытаетесь создать? Только сервер авторизации oauth2 или сервер аутентификации с сервером ресурсов? Есть ли у вас где-нибудь на github ваш пример?

2. Я загрузил образец здесь . Он работает так, как он зарегистрирован. Но если вы раскомментировали пользовательскую веб-безопасность в auth-server / Application, она больше не работает. (Просто запустите сервер аутентификации и клиент с помощью основного метода и откройте localhost:8081 / client в браузере)

3. если вы включите веб-безопасность, вероятно, конечные точки /oauth/ authorize и /oauth / confirm_access не будут видны.

4. не могли бы вы также предоставить дополнительную информацию о том, как вы это тестируете? Я думаю, что это не работает с текущей настройкой.

5. Если я запускаю оба приложения, как на github, и открываю localhost: 8081 / client , я правильно перенаправляюсь, могу войти в систему и авторизоваться, а также получить перенаправление обратно, клиент также запрашивает userInfoUri и аутентифицирует пользователя. Но если я раскомментирую CustomWebSecurity и перезапущу оба приложения, то последний шаг завершится ошибкой в клиентском приложении с «Ошибка аутентификации: не удалось получить токен доступа».

Ответ №1:

Измените конфигурацию безопасности http на что-то вроде этого:

     @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .requestMatchers()
                .antMatchers("/", "/login", "/oauth/authorize", "/oauth/confirm_access")
                .and()
                .authorizeRequests()
                .anyRequest().authenticated();
    }
  

Комментарии:

1. У меня это не работает. Я даю мне 403 при / oauth / авторизации.