获取服务帐户的 Google IdToken?

Chu*_*ega 2 google-cloud-platform google-signin

我有一个为 Android 客户端提供服务的后端,使用从 Android 应用程序发送的 IdToken 对它们进行身份验证。现在,我需要对在使用我的 api 的 aws 上运行的服务进行身份验证。所以我认为服务帐户可以解决这个问题,使用私有 pem 文件创建 IdToken 并像 Android 客户端一样发送它。但我找不到使用这些凭据获取 IdToken 的方法。这可能吗(最好在nodejs中)。或者我在这里走错路了?

psy*_*ca0 5

我知道这个问题比较旧,但我发现了这个问题,但它并没有让我找到最终的答案。

我按照https://cloud.google.com/endpoints/docs/openapi/service-account-authentication#using_a_google_id_token中的指南与https://cloud.google.com/iap/docs/authentication-howto的一些组合进行操作,其中提到,关键是target_audience在生成的 JWT 中包含声明。

所以,本质上我制作了一个 JWT,如下所示:

{
  "exp": 1547576771,
  "iat": 1547575906,
  "aud":"https://www.googleapis.com/oauth2/v4/token",
  "target_audience": "https://example.com/",
  "iss": EMAIL OF SERVICE ACCOUNT
}
Run Code Online (Sandbox Code Playgroud)

并将其发布到https://www.googleapis.com/oauth2/v4/tokenparamsgrant_type=urn:ietf:params:oauth:grant-type:jwt-bearerassertion=<THE JWT>

没有target_audience端点给了我一个访问令牌,但有了它我得到了一个id_token