Настраиваемый централизованный сервер авторизации 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.
}
}
Итак вопросы:
- Что это за ошибка и почему я ее вижу?
- Как мне настроить страницу входа, которую я вижу? Я отчаянно просматриваю документацию 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