首页 > 解决方案 > Google App Engine 服务到服务身份验证(非编程)

问题描述

我有一个场景,我有一个本地 GUI 应用程序,它有一个“Web 服务调用”组件,我用它来调用 GAE API。在 GUI 应用程序中,可以:

但是不可能以编程方式做任何事情。Web 服务小部件具有仅用于传递 API URL、查询参数和标头的字段。

我希望对 API 调用进行服务到服务的身份验证,并且 API 也应该使用 IAP 进行保护。

我知道推荐的方法是创建一个服务帐户并向客户端提供服务帐户 JSON 密钥文件,然后客户端签署 JWT 令牌并将其作为不记名令牌传递。但由于我只有小部件,无法编程,因此无法选择签署 JWT 令牌。

我正在查看可以支持“client_credentials”授权类型的 Google OAuth 或 IAM API,其中我可以仅使用 clientId 和 clientSecret 获取访问令牌——这在 Apigee 中是可能的。但 Google OAuth API 似乎不支持这种授权类型。

我还查看了使用 API KEY 的 Cloud Endpoints - 所以目前的想法是客户端在标头/参数中传递 API KEY 以向 Cloud Endpoints 进行身份验证,然后 Cloud Endpoints 使用其服务帐户通过 IAP 获取访问权限,最后,我认为客户端还可以通过 GAE API 后端服务验证的 Authorization 标头发送“基本身份验证”凭据。额外的“Basic Auth”是因为 Google 建议使用除 API KEY 之外的另一种身份验证方法。

如果可能的话,我想要一个更简单的解决方案,只使用 GAE 和 IAP。任何其他建议,特别是使用限时令牌,只能通过 http(s) 调用(非编程或客户端库)工作,非常感谢。任何替代方案或尝试的东西也值得赞赏。

标签: google-app-enginegoogle-cloud-platform

解决方案


使用 JWT Google API 身份验证查看此服务器到服务器身份验证


推荐阅读