“无效的 JWT:受众检查失败。” 尝试从 Google 获取 OAuth 令牌时出错

Bra*_*rad 2 oauth oauth-2.0 jwt

我正在尝试从 google 获取 OAuth2 令牌并不断收到此响应:

{
  "error": "invalid_grant",
  "error_description": "Invalid JWT: Failed audience check. The right audience is https://www.googleapis.com/oauth2/v4/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ1cGRhdGUtbG9jYXRpb24tZGF0YUB0b3RlbWljLWd1aWxkLTEyOTIyMC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsInNjb3BlIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vYXV0aC9wbHVzLmJ1c2luZXNzLm1hbmFnZSIsImF1ZCI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92NC90b2tlbiIsImlhdCI6MTQ2MzY4MjEwOSwiZXhwIjoxNDYzNjg1NjQ5fQ==.a09YUnpiY0FZZFZDUm5PaC91ZkV6ZUtJNGp4WWRWcHY3eFhHNVBXTmw2TGNjZ0JKZThTS2pENitldGNqZzFPMlRRMmNEWWx0aHBNU2k4NS9GeVhnQXdaMHRXVTVEbmcxcXFXQzFRYlp6NmNTZFNlcUt3TElGZjRLeHJCTTgxcVBmVSttQTM0dmprTGtSeEVsWC8vNGpTNDdYM0dobEk2THJOL2xOa2tXcnpEZlk2K1QrNk5OSndyTXhOaTZmcFdXQ09KVE9Gd0tVSnZjYnR1VWNLYnVXbzBqVEhqL056aHBPbkROVW1SSEpYY2JpU3VxVWdRai9PZldiR1p5bzJFK3ZtRzQ5NXdmdDdMMXJkQWdMZkZPcitpeWZVd1FneXVmZFUrRGd1dlZPOWdZSENrS1Fnd0tZb0tUbjNIU29Bcm13OE9OL0RFdkVPM2N2YjhTbFoxbjhRPT0="
}
Run Code Online (Sandbox Code Playgroud)

服务帐户(我正在使用)的文档在这里:https : //developers.google.com/identity/protocols/OAuth2ServiceAccount#authorizingrequests

他们说:

“断言的预期目标的描述符。在发出访问令牌请求时,此值始终为https://www.googleapis.com/oauth2/v4/token。”

所以当我形成我的 Claim Set 时,它看起来像这样:

{"iss":"********.iam.gserviceaccount.com","scope":"https://www.googleapis.com/auth/plus.business.manage","aud":"https://www.googleapis.com/oauth2/v4/token","iat":1463683812,"exp":1463687352}
Run Code Online (Sandbox Code Playgroud)

有谁知道什么可能导致我的受众检查失败以及我应该使用什么作为该值?我的令牌请求的其他部分是否有可能是不正确的,它只是说我的受众检查失败了?

ADW*_*ADW 6

截至目前(2020 年 2 月 7 日),aud值为

https://oauth2.googleapis.com/token
Run Code Online (Sandbox Code Playgroud)

关联。截图如下。


在OP的时候,它是

https://www.googleapis.com/oauth2/v4/token
Run Code Online (Sandbox Code Playgroud)

Google ID平台截图


Han*_* Z. 5

看起来您的客户端代码将参数作为查询参数而不是所需的 POST 参数传递给令牌端点。