Как проверить токен мобильного приложения Facebook / google access на сервере авторизации OAuth2 с весенней загрузкой 2.0? - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь проверить номер телефона или адрес электронной почты клиента Android / iOS, используя сервис Account Account-Kit Facebook.Я не уверен, как проверить код авторизации или токен доступа с помощью внутреннего сервера Spring boot и вернуть свой собственный токен доступа.

Между прочим, я тщательно изучил этот блог https://www.baeldung.com/spring-security-5-oauth2-login,, но он основан на сессиях.Я не понимаю, как изменить это на состояние без состояния (например, /oauth/token).

Может кто-нибудь, пожалуйста, дайте мне знать, как решить проблему?

Ссылка: [https://developers.facebook.com/docs/accountkit/graphapi][1]

Вот мой код:

@Configuration
@EnableOAuth2Client
public class SocialConfig extends WebSecurityConfigurerAdapter {

@Autowired
OAuth2ClientContext oauth2ClientContext;

private String[] PUBLIC_URL = { "/*", "/api/v1/account/validate", "login/accountkit", "/api/v1/account" };

@Override
protected void configure(HttpSecurity http) throws Exception {
    // super.configure(http);
    http.authorizeRequests()
    .antMatchers(PUBLIC_URL).permitAll()
    .anyRequest().authenticated()
    .and().csrf()
    .disable()
    .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);

}

private Filter ssoFilter() {
    OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(
            "/login/accountkit");
    OAuth2ProtectedResourceDetails accountkit = accountKit();
    OAuth2RestTemplate template = new OAuth2RestTemplate(accountkit, oauth2ClientContext);
    filter.setRestTemplate(template);
    UserInfoTokenServices userInfo = new UserInfoTokenServices(accountKitResource().getUserInfoUri(),
            accountkit.getClientId());
    userInfo.setRestTemplate(template);
    filter.setTokenServices(userInfo);
    return filter;
}

@Bean
@ConfigurationProperties("accountkit.client")
protected OAuth2ProtectedResourceDetails accountKit() {
    AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails();
    resource.setAccessTokenUri("https://graph.accountkit.com/v1.2/me");
    resource.setUserAuthorizationUri("https://graph.accountkit.com/v1.2/access_token");
    resource.setClientId("AA|xxxx|xxx");
    resource.setGrantType("authorization_code");
    resource.setTokenName("access_token");
    resource.setAuthenticationScheme(AuthenticationScheme.form);
    resource.setPreEstablishedRedirectUri("http://localhost:8080/login/accountkit");
    return resource;
}

@Bean
@ConfigurationProperties("accountkit.resource")
protected ResourceServerProperties accountKitResource() {
    return new ResourceServerProperties();
}

}

...