скачай весной и отреагируй логин с фейсбука - PullRequest
0 голосов
/ 24 августа 2018

У меня есть весенний отдых 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...