Настраиваемый централизованный сервер авторизации Spring (oauth) - ошибка аутентификации и настройки

Я зеленый и к весне, и к OAuth, что делает эту проблему захватывающей для меня!

Из того, что я понял, мне нужно создать централизованный сервер авторизации с oauth и открытым ID.

У нас есть центральная база данных пользователей, и мы хотим, чтобы все наши приложения выполняли вызов на сервер авторизации, входили в систему, автоматически одобряли (поскольку единственный трафик должен поступать с наших серверов) и перенаправляли их на основе URI, который они передают.

В идеале мы должны предоставить им токен авторизации и токен идентификатора (открытый идентификатор), чтобы они имели информацию о пользователе, вошедшем в систему.

Поэтому я работаю над настройкой загрузочного приложения Spring, где оно действует как сервер авторизации. Пока я вижу страницу входа - но каждая попытка входа заканчивается следующей ошибкой:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Вот что у меня есть для этого сервера:

SpringBootServletInitializer (инициализатор приложения) - com.company

@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

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

AuthorizationServerConfigurerAdapter (сервер аутентификации) - com.company.config

@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory()
            .withClient("my_client")
                .secret("my_secret")
                .autoApprove(true)
                .authorizedGrantTypes("authorization_code", "refresh_token", "password") 
                .scopes("openid")
                .accessTokenValiditySeconds(600);
    }
}

WebSecurityConfigurerAdapter (безопасность) - com.company.config

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    @Autowired
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()

            .withUser("user").password("password")
            .roles("USER");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .formLogin()

            .and()

            .httpBasic().disable()
            .anonymous().disable()
            .authorizeRequests().anyRequest().authenticated();

        // disabled basic auth and configured to use dafault Spring Security form login.
    }
}

Итак вопросы:

  1. Что это за ошибка и почему я ее вижу?
  2. Как мне настроить страницу входа, которую я вижу? Я отчаянно просматриваю документацию Spring, и я потерян / поражен. У меня нет ничего в папке ресурсов за пределами файла свойств, который у меня есть.

1 ответ

Решение

Ошибка связана с возможностью привязки к странице ошибки, потому что есть исключение.

Вы можете указать свою собственную страницу входа в систему следующим образом:

       .formLogin()
          .loginPage("/login.html") //your custom login page
          .defaultSuccessUrl("/homepage.html", true) //welcome page after login success
          .failureUrl("/login.html?error=true") // when AccessDenied happens
Другие вопросы по тегам