Spring Boot 2 Oauth Infinite Redirect - PullRequest
       14

Spring Boot 2 Oauth Infinite Redirect

0 голосов
/ 28 июня 2019

Я изо всех сил пытаюсь обновить приложение с Spring Boot 1.5 до Spring Boot 2, которое использует OAuth и пользовательский сервер авторизации.

Поток OAuth работает правильно, используя сервер авторизации и его весеннюю загрузку 1.5.настроить.Однако после перехода на весеннюю загрузку 2 (в настоящее время 2.1.3).

Я получаю бесконечное перенаправление между сервером авторизации и клиентским приложением.Перенаправления выполняются следующим образом:

http://localhost:8080/
http://localhost:8080/login
https://auth.example.com/oauth/authorize?...
http://localhost:8080/login?code=[code1]&state=[state]
http://localhost:8080/login
https://auth.example.com/oauth/authorize?...
http://localhost:8080/login?code=[code1]&state=[state]
http://localhost:8080/login
https://auth.example.com/oauth/authorize?...
http://localhost:8080/login?code=[code1]&state=[state]
http://localhost:8080/login
https://auth.example.com/oauth/authorize?...
http://localhost:8080/login?code=[code1]&state=[state]
...

Как вы можете видеть, как только сервер аутентификации перенаправляет обратно на имя входа с кодом авторизации в строке запроса, клиентское приложение просто перенаправляет обратно на /login перезапусквесь процесс, затем он перенаправляется бесконечно, пока браузер не вызывает остановку.

Я разобрал приложение до гола, вот моя конфигурация:

Applicaiton.java

@SpringBootApplication
public class Application
{

   public static void main( String[] args )
   {
      SpringApplication.run( AdminApplication.class, args );
   }

}

SecurityConfig.java

@Configuration
@EnableOAuth2Sso
public class SecurityConfig extends WebSecurityConfigurerAdapter
{

   @Override
   protected void configure( HttpSecurity http ) throws Exception
   {
      http.antMatcher( "/**" )
               .authorizeRequests()
               .antMatchers( "/assets/**", "/app/**", "/login*" ).permitAll()
               .anyRequest().authenticated();
   }

}

application.yml

security:
  oauth2:
    client:
      clientId: xxxxxx
      clientSecret: xxxxx
      accessTokenUri: https://auth.example.com/oauth/token
      userAuthorizationUri: https://auth.example.com/oauth/authorize
    resource:
      userInfoUri: https://auth.example.com/user

1 Ответ

1 голос
/ 28 июня 2019

Я нашел решение своей проблемы, оказалось, что Spring Boot 2, похоже, не использует заголовок Authorization по умолчанию при запросе токена доступа, добавление следующего свойства конфигурации решило проблему

security:
  oauth2:
    client:
      authenticationScheme: header
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...