весенняя загрузка sso аутентифицируется с помощью плагина реакции-соц-входа - PullRequest
0 голосов
/ 22 января 2020

У меня есть приложение весенней загрузки с защитой весенней загрузки и OAuth2 с аутентификацией google, facebook. Это конфигурация безопасности.

@Override
    public void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .cors()
                .and()
                // we don't need CSRF because our token is invulnerable
                .csrf().disable()

                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()

                // don't create session
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()

                .authorizeRequests()
                .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                //allow requests
                .antMatchers("/user/**").permitAll()//hasAuthority(Permission.USER_ADMIN)
                .antMatchers(HttpMethod.POST, "/roles-permissions-setup/**").permitAll()
                .antMatchers(HttpMethod.POST, "/roles/**").permitAll()
                .antMatchers("/auth/**", "/oauth2/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .oauth2Login().authorizationEndpoint().baseUri("/oauth2/authorize/**").authorizationRequestRepository(cookieAuthorizationRequestRepository())
                .and()
                .redirectionEndpoint().baseUri("/oauth2/callback/**")
                .and()
                .userInfoEndpoint().userService(customOAuth2UserService)
                .and()
                .successHandler(oAuth2AuthenticationSuccessHandler)
                .failureHandler(oAuth2AuthenticationFailureHandler);

        // Custom JWT based security filter
        httpSecurity
                .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

        // disable page caching
        httpSecurity.headers().cacheControl();
    }

в соответствии с приведенной выше конфигурацией, я могу вызвать /oauth2/authorize/ путь чтобы пройти аутентификацию, а затем получить данные Google или Facebook по пути /oauth2/callback/. Это нормально работает. но в моем приложении «Реакция» я использовал плагин react-social-login , согласно которому плагин получает данные аутентификации данных Google в интерфейсе пользователя. это пример объекта данных, который я получаю

{
    "token_type":"Bearer",
    "access_token":"ya29.Il-6B6u9our",
    "scope":"email profile openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
    "login_hint":"AJDLj6JUa8",
    "expires_in":3599,
    "id_token":"eyJhbG1MDg5Yjg5Nzk1MzdhODFmYzU0NjJmYjhhZjM4NzYxNTM1YTAifQ.MMi-iuj3-2tlNY-gAi_vJPx7uMOC3t603Mo9ZDs2RhW7RV5sb_XsGdX2vhl5PFxBUfHmOUV07D9arpSamKAdJPkZlq7KarPA1K1aBQXRNETQRM0B5HaTB71G6M36MoBOMY6AInW3MW2X3ErzPN1TpOiNC3S77nqCA",
    "session_state":{
        "extraQueryParams":{
            "authuser":"1"
        }
    }
}

Я отправил запрос POST на URL обратного вызова, как (http://localhost:8281/oauth2/callback/google) с вышеуказанными данными. тогда он получит Unauthorized ответ.

Так, как я могу отправить и аутентифицировать пользователя, используя реагирующий плагин?

...