Spring Security + Google OAuth2 Login: access token is null?

Viewed 1631

I'm getting this error from the default Spring Security OAuth2 login implementation (not using Spring Boot):

[invalid_token_response] An error occurred while attempting to retrieve the OAuth 2.0 Access Token Response: Error while extracting response for type [class org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse] and content type [application/json;charset=utf-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: An error occurred reading the OAuth 2.0 Access Token Response: null; nested exception is java.lang.NullPointerException

screenshot here

The plot is: I go to any protected page, it redirects to Google "choose an account" thingy, I choose the account and bang, redirection to /login?error displaying the text mentioned above.

Spring Security config:

@Configuration
@EnableWebSecurity()
@PropertySource("classpath:application.properties")
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {   

    @Override
    protected void configure(HttpSecurity http) throws Exception {      
        http    
            .csrf().disable()
            .authorizeRequests()
                .antMatchers("/tlog/**").authenticated()                
            .and().oauth2Login();
    }

    @Bean
    public OAuth2AuthorizedClientService authorizedClientService() {      
        return new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository());
    }

    @Bean
    public OAuth2AuthorizedClientRepository authorizedClientRepository(OAuth2AuthorizedClientService authorizedClientService) {
        return new AuthenticatedPrincipalOAuth2AuthorizedClientRepository(authorizedClientService);
    }


    @Bean
    public ClientRegistrationRepository clientRegistrationRepository() {        
        return new InMemoryClientRegistrationRepository(googleClientRegistration());        
    }   

    private ClientRegistration googleClientRegistration() {
        return CommonOAuth2Provider.GOOGLE.getBuilder("google")
            .clientId("XXX")
            .clientSecret("ZZZ")
            .build();
    }

}

What am I missing here? Can't find any decent tutorial NOT using Spring Boot which would actually help.

1 Answers

I got the same problem. Jackson dependency solved it.

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
Related