Spring Boot示例应用中Google Auth token返回invalid_token错误问题
Spring Security判定Google OAuth2 Token无效的常见原因
- Issuer校验规则冲突
你的代码中创建issuer校验器时传入的是${google.iss}对应的值accounts.google.com,但Google官方签发的JWT的iss字段固定为带协议前缀的https://accounts.google.com,二者不匹配会直接触发校验失败。 - JWK Set地址配置错误
你配置的spring.security.oauth2.resourceserver.jwt.jwk-set-uri值为OpenID元数据地址https://accounts.google.com/.well-known/openid-configuration,该地址不是公钥集合地址,Spring Security无法获取正确的公钥完成签名校验,正确的Google JWK地址应为https://www.googleapis.com/oauth2/v3/certs。 - Audience校验不匹配
需确认${google.client-id}配置的值,和你在SoapUI中发起OAuth2请求时填写的Client ID完全一致,无字符偏差、多余空格,Google返回的JWT的aud字段必须和配置的Client ID完全相等才能通过校验。 - Token类型误用
隐式授权流会同时返回access_token和id_token两个值,只有id_token是符合JWT规范、可被资源服务器校验的身份凭证,如果你误传了access_token(Google的access_token不是标准JWT结构)会直接解析失败。 - Token已过期
Google签发的ID Token默认有效期仅为1小时,校验时会对比当前时间和Token的exp字段,超出有效期的Token会被判定为无效。 - 请求头格式错误
确认Authorization请求头格式严格为Bearer [你的Token],注意Bearer和Token之间有且仅有一个空格,Token本身没有被截断、转义或者额外添加引号等字符。 - 自定义校验逻辑问题
如果你自己实现的AudienceValidator逻辑存在缺陷(比如大小写敏感、多值处理错误等),也会导致正常的Token被误判为无效。
内容的提问来源于stack exchange,提问作者BlaMath20
相关产品推荐
相关产品推荐

