我已经在Google Cloud Platform上创建了一个服务帐户。我正在使用一个独立的Java程序,该程序使用GCP Java客户端API通过获取服务帐户JSON文件来获取身份验证令牌ID。通过使用令牌ID,我可以创建一个计算实例。
我不想使用Java API或gcloud工具,是否存在一个REST API,其中包含必需的详细信息并返回令牌ID?
我遍历了GCP文档,找不到使用服务帐户通过REST进行身份验证和授权的任何详细信息。
答案 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中。