У меня есть приложение весенней загрузки с защитой весенней загрузки и 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
ответ.
Так, как я могу отправить и аутентифицировать пользователя, используя реагирующий плагин?