2

Я пытаюсь настроить приложение загрузки Spring для использования имени входа в систему и для проверки учетных данных с использованием сервера авторизации OAuth 2 (отправка учетных данных из регистра формы на URL авторизации пользователя .Spring Security OAuth 2 с формой login

Однако, когда я использую следующие SecurityConfig, и я перехожу на ресурс, вместо того, чтобы использовать вход в форму, он перенаправляет на сервер авторизации, запрашивая мои учетные данные (используя базовую проверку подлинности), а затем перенаправляет обратно само приложение

Я использую следующие SecurityConfig:

@Configuration 
@EnableOAuth2Sso 
public class SecurityConfig extends OAuth2SsoConfigurerAdapter { 

    @Override 
    public void configure(HttpSecurity http) throws Exception { 
     http 
      .logout() 
      .and() 
      .antMatcher("/**") 
       .authorizeRequests() 
        .anyRequest().authenticated() 
        .and() 
         .csrf() 
         .csrfTokenRepository(csrfTokenRepository()).and() 
         .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class) 
      .formLogin(); 
    } 

    // CSRF repository + filter 
} 

Я предоставляю formLogin() методу configure(), но это не работает.

Следующая конфигурация в моем application.yml файле:

spring: 
    oauth2: 
    client: 
     clientId: test 
     clientSecret: secret 
     accessTokenUri: http://localhost:8081/uaa/oauth/token 
     userAuthorizationUri: http://localhost:8081/uaa/oauth/authorize 
     clientAuthenticationScheme: header 
    resource: 
     userInfoUri: http://localhost:8081/uaa/user 

Эта конфигурация делает работу, потому что после редиректа я получаю авторизован, но это не так, как я хотел бы, чтобы работать (с формой войдите вместо переадресации на сервер авторизации OAuth2).

ответ

4

С SSO все дело в том, что пользователь аутентифицируется с помощью сервера auth (localhost: 8081 в вашем случае). Если вы хотите войти в форму, вам нужно ее реализовать, а не в клиентском приложении.

Смежные вопросы