#spring-security #spring-boot #spring-security-oauth2 #oauth2 #spring-oauth2
#spring-безопасность #весенняя загрузка #spring-security-oauth2 #oauth-2.0 #spring-oauth2
Вопрос:
Я пытаюсь настроить Spring OAuth2 и использую пользовательский WebSecurityConfigurerAdapter (@EnableWebSecurity).
В качестве основы я скопировал следующие два проекта:
- ванильный пример
- клиентское приложение с @EnableOAuth2Sso и соответствующими свойствами
Это работает, как и ожидалось, из коробки.
Но, когда я пытаюсь добавить 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 / авторизации.