У меня есть весенний отдых API и реагировать на лобовое приложение.Я хочу, чтобы облегчить пользователю аутентификацию с Facebook.После успешной аутентификации я использую facebookId, чтобы проверить, есть ли этот пользователь в моей базе данных, если нет, я создаю пользователя и сохраняю его.Это единственный способ создания учетных записей в моем приложении.Я использовал этот учебник для создания аутентификации, и он отлично работает ...
Но два дня назад я решил, что хочу подключить свой бэкэнд с внешним интерфейсом, и я не могу отправить запрос назащищенная конечная точка.Когда я делаю это, мой запрос перенаправляется в / connect / facebook (с методом запроса OPTIONS - понятия не имею, почему), и ничего не происходит.
Я читал о том, что должен генерировать токены, но я понятия не имею, каксвязать это с Facebook, и я даже не знаю, насколько это хороший подход.
edit.
@Order(200)
@Configuration
@EnableOAuth2Client
@EnableAuthorizationServer
@RequiredArgsConstructor
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private final OAuth2ClientContext oauth2ClientContext;
private final AuthSuccessHandler customAuthenticationSuccessHandler;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/login**").permitAll()
.anyRequest().authenticated()
.and()
.exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login/facebook"))
.and()
.logout().logoutSuccessUrl("/").permitAll()
.and()
.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);
}
@Bean
public FilterRegistrationBean<OAuth2ClientContextFilter> oauth2ClientFilterRegistration(OAuth2ClientContextFilter filter) {
var registration = new FilterRegistrationBean<OAuth2ClientContextFilter>();
registration.setFilter(filter);
registration.setOrder(-100);
return registration;
}
private Filter ssoFilter() {
var filter = new CompositeFilter();
List<Filter> filters = new ArrayList<>();
filters.add(ssoFilter(facebook()));
filter.setFilters(filters);
return filter;
}
private Filter ssoFilter(ClientResources client) {
var filter = new OAuth2ClientAuthenticationProcessingFilter("/login/facebook");
var template = new OAuth2RestTemplate(client.getClient(), oauth2ClientContext);
filter.setRestTemplate(template);
var tokenServices = new UserInfoTokenServices(client.getResource().getUserInfoUri(), client.getClient().getClientId());
tokenServices.setRestTemplate(template);
filter.setTokenServices(tokenServices);
filter.setAuthenticationSuccessHandler(customAuthenticationSuccessHandler);
return filter;
}
@Bean
@ConfigurationProperties("facebook")
public ClientResources facebook() {
return new ClientResources();
}
}