Ошибка CORS для сервера, отправленного URL перенаправления для входа в социальную сеть Facebook - PullRequest
0 голосов
/ 27 декабря 2018

Итак, я написал REST API с использованием Spring (java), который защищен с помощью базовой аутентификации, а также отвечает за обработку социальных логинов.Ниже приведена конфигурация для входа в Facebook.

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
     //autowired

    @Bean
    @Override
    protected AuthenticationManager authenticationManager() throws Exception {
        return super.authenticationManager();
    }

    @Bean
    public ProviderSignInController providerSignInController() {
        return new ProviderSignInController(connectionFactoryLocator(), usersConnectionRepository(),
                new FacebookSignInAdapter());
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(NoOpPasswordEncoder.getInstance());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .authorizeRequests()
        .antMatchers("/login*", "/signin/**", "/signup/**").permitAll()
        .anyRequest().authenticated()
        .and().httpBasic()
        .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and().csrf().disable()
        ;
    }

    @Bean
    public ConnectionFactoryLocator connectionFactoryLocator() {
        ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();

        registry.addConnectionFactory(new FacebookConnectionFactory(environment.getProperty("facebook.clientId"),
                environment.getProperty("facebook.clientSecret")));

        return registry;
    }

    @Bean
    public UsersConnectionRepository usersConnectionRepository() {
        return new InMemoryUsersConnectionRepository(connectionFactoryLocator());

    }

}

Используемая зависимость:

<dependency>
    <groupId>org.springframework.social</groupId>
    <artifactId>spring-social-facebook</artifactId>
    <version>2.0.3.RELEASE</version>
</dependency>

Теперь мой интерфейс написан с использованием React.js и работает на https://localhost:3000.Он имеет кнопку Вход через Facebook , которая отправляет запрос POST на https://localhost:8443/signin/facebook./signin/facebook - это URL, предоставленный Spring-Security.API REST возвращает URL-адрес перенаправления, по которому браузер блокирует проблему CORS.Я понимаю CORS и настроил его на своем бэкэнде (поэтому веб-интерфейс может отправлять запросы).

Access to XMLHttpRequest at 'https://www.facebook.com/v2.5/dialog/oauth?client_id=2198xxxxxx91&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8443%2Fsignin%2Ffacebook&state=xxxx' (redirected from 'https://localhost:8443/signin/facebook') from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Итак, каково разрешение этого?Я гуглил это и где-то читал, что CORS обрабатывается бэкэндом, а не фронтэндом.Но бэкэнд уже обрабатывает CORS.какая должна быть конфигурация для этого?

...