Spring Security + Google OAuth2 登录:访问令牌为空?
Posted
技术标签:
【中文标题】Spring Security + Google OAuth2 登录:访问令牌为空?【英文标题】:Spring Security + Google OAuth2 Login: access token is null? 【发布时间】:2019-04-19 09:56:17 【问题描述】:我从默认的 Spring Security OAuth2 登录实现中收到此错误(不使用 Spring Boot):
[invalid_token_response] 尝试检索 OAuth 2.0 访问令牌响应时出错:提取类型 [class org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse] 和内容类型 [application/json;字符集=utf-8];嵌套异常是 org.springframework.http.converter.HttpMessageNotReadableException:读取 OAuth 2.0 访问令牌响应时出错:null;嵌套异常是 java.lang.NullPointerException
screenshot here
情节是:我去任何受保护的页面,它重定向到谷歌“选择一个帐户”的东西,我选择了这个帐户然后砰,重定向到 /login?error 显示上面提到的文本。
Spring 安全配置:
@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 的体面教程,这实际上会有所帮助。
【问题讨论】:
我有同样的问题,但 jackson-databind 没有解决它。你最后成功了吗? (任何帮助表示赞赏) 是的,它确实有效,但在我的情况下,问题只是 - 杰克逊依赖。 【参考方案1】:我遇到了同样的问题。杰克逊依赖解决了它。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
【讨论】:
以上是关于Spring Security + Google OAuth2 登录:访问令牌为空?的主要内容,如果未能解决你的问题,请参考以下文章
Grails 通过 Spring Security 插件使用 Google 身份验证
Apache Oltu Spring Security OAuth2 和 Google 集成
如何使用 spring security 和 spring boot 对 Google 用户进行身份验证,将 mongoDB 作为存储库?
Spring Security + Google OAuth2 登录:访问令牌为空?
重定向循环中的 Spring Security OAuth2 (google) web 应用程序
如何配置 Spring Boot 和 Spring Security 以支持表单登录和 Google OAuth2 登录