我从默认的Spring Security OAuth2登录实现(不是使用Spring Boot)中收到此错误:
[invalid_token_response]尝试检索OAuth 2.0访问令牌响应时发生错误:提取类型为[org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse]类型和内容类型为[application / json; charset = utf-8];嵌套的异常是org.springframework.http.converter.HttpMessageNotReadableException:读取OAuth 2.0访问令牌响应时发生错误:null;嵌套的异常是java.lang.NullPointerException
情节是:我进入任何受保护的页面,它重定向到Google“选择一个帐户”,然后选择该帐户并爆炸,重定向到/ login?显示上述文本的错误。
Spring Security配置:
@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();
}
}
我在这里想念什么?找不到不使用Spring Boot的实际教程,这实际上会有所帮助。
答案 0 :(得分:0)
我遇到了同样的问题。杰克逊的依赖性解决了这个问题。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>