我正在尝试构建一个基本的Spring Boot应用程序,该应用程序允许我将用户身份验证的工作委托给外部OAuth2提供程序(如Facebook)。
我有两个主要问题:
GET请求" https://graph.facebook.com/me"结果是200(OK)
我也得到以下内容:
将[interface java.util.Map]读作" application / json"运用 [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@2a7ce52b] 委托org.springframework.security.web.authentication.session.ChangeSessionIdAuthenticationStrategy@4f061f45 SecurityContext为空或内容为匿名 - 上下文不会存储在HttpSession中。
解析和存储返回的凭据就好像出了问题。
身份验证请求失败: org.springframework.security.authentication.BadCredentialsException: 无法获取访问令牌
这是一种打击和错过,我无法追查问题。它也发生在使用Google OAuth2时。
我基本上使用了@ EnableOAuth2Sso注释,并使用application.yml文件配置了凭据:
security:
oauth2:
client:
clientId: 123
clientSecret: bla
accessTokenUri: https://graph.facebook.com/oauth/access_token
userAuthorizationUri: https://www.facebook.com/dialog/oauth
tokenName: oauth_token
authenticationScheme: query
clientAuthenticationScheme: form
resource:
userInfoUri: https://graph.facebook.com/me
preferTokenInfo: false
非常感谢任何帮助:)
答案 0 :(得分:0)
最后我设法解决了这个问题,spring-boot-starter-tomcat
maven依赖项被标记为<scope>provided</scope>
,从而干扰了在嵌入式tomcat中正确初始化spring上下文对象的能力。