Я пытаюсь внедрить социальный вход в приложение Spring boot 2 с пользовательской страницей входа. Я помещаю spring-boot-starter-oauth2-client в качестве зависимости в моем pom.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
Затем я предоставляю некоторые идентификаторы клиента и секретные данные в файле свойств моего приложения.
spring.security.oauth2.client.registration.google.client-id=client-id
spring.security.oauth2.client.registration.google.client-secret=client-secret
С этим минимальным кодом весенняя загрузка регистрирует клиента и предоставляет страницу входа со ссылкой для входа через клиент. Теперь я хочу предоставить свою страницу входа в систему, поэтому я создал конфигурацию Seurity ..
@Configuration
@EnableWebSecurity(debug = false)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/auth/**", "/login/oauth2/**", "/login**", "/logout", "/**/*.css", "/**/*.js").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login().loginPage("/login")
.and()
.logout();
}
}
Затем я предоставляю контроллер для обслуживания моей пользовательской страницы входа, сейчас я только что включил это в конфигурацию весенней загрузки.
@SpringBootApplication
@Controller
public class SingleSignonApplication {
public static void main(String[] args) {
SpringApplication.run(SingleSignonApplication.class, args);
}
@RequestMapping("/login")
public String loginPage() {
return "login.html";
}
}
.. и моя страница входа (упрощенно) содержит ссылки для входа в систему через Google ..
<a class="btn btn-block btn-social btn-google" href="/oauth2/authorization/google"><span class="fab fa-google"></span> Sign in with Google</a>
Теперь, когда я вхожу через эту кнопку, она вызывает google, проходит аутентификацию, а затем, когда она перенаправляется на login / oauth2 / code / google ..., я получаю страницу 404, не найденную. Также / выход из системы перестает работать. Нужно ли вручную настраивать другие компоненты, так как я понимаю, что полагаюсь на весеннюю загрузку, чтобы продолжить настройку клиентов, перечисленных в файле свойств приложения, и автоматически настроить хранилище клиентов.