使用服务帐户登录到Google Platform的REST API

时间:2018-12-21 11:11:28

标签: google-cloud-platform google-compute-engine service-accounts

我已经在Google Cloud Platform上创建了一个服务帐户。我正在使用一个独立的Java程序,该程序使用GCP Java客户端API通过获取服务帐户JSON文件来获取身份验证令牌ID。通过使用令牌ID,我可以创建一个计算实例。

我不想使用Java API或gcloud工具,是否存在一个REST API,其中包含必需的详细信息并返回令牌ID?

我遍历了GCP文档,找不到使用服务帐户通过REST进行身份验证和授权的任何详细信息。

1 个答案:

答案 0 :(得分:2)

  

我已经在Google Cloud Platform上创建了一个服务帐户。我在用   一个独立的Java程序,该程序使用GCP Java客户端API来获取   通过获取服务帐户JSON文件的身份验证令牌ID。通过使用   令牌ID,我可以创建一个计算实例。

使用服务帐户是验证和授权软件应用程序的正确且推荐的方法。

注意。这里的假设是软件应用程序在您控制的系统上运行。相反,如果要在不受您控制的用户桌面或系统上安装软件,则可以使用Google OAuth 2.0(Google帐户)获取用户证书来授权您的应用程序。

另一种方法是从时间有限的服务帐户凭据中发出短期的临时凭据。这些短暂的凭据将在您的服务器上创建,然后移交给客户端。

  

我不想使用Java API或gcloud工具,是否有REST API   是否存在必需的详细信息并返回令牌ID?

您遇到了典型的“鸡还是蛋”情况。您需要凭据来进行身份验证和授权,否则任何人都可以创建凭据。 Google服务帐户凭据提供了此功能。要创建服务帐户凭据,请使用Google Cloud Console或gcloud CLI下载服务帐户Json文件。

  

我遍历了GCP文档,找不到任何详细信息   使用Service通过REST进行身份验证和授权   帐户。

这个问题令人困惑。您是要使用服务帐户凭据来授权您的Google API调用,还是要调用Google API来获取凭据?

在第一种情况下,一旦您创建服务帐户凭据,便会使用它们来授权您的API调用。在进行API调用时,将访问令牌添加到HTTP标头中。

对于第二种情况,请使用Google OAuth 2.0获取凭据。 Google OAuth 2.0使用Google帐户进行身份验证。此方法为您提供访问令牌(就像服务帐户一样)以及刷新令牌和客户端ID令牌。您需要将Google帐户用户身份添加到提供授权(特权)的Google Cloud IAM中。