【发布时间】:2020-11-18 03:33:16
【问题描述】:
我正在尝试连接到使用 Cloud Run(托管)运行的服务。该实例不是公开的,仅在开发中。因此,我使用 id 令牌进行身份验证,以验证此 link 中给出的连接。
我看到他们在这里使用身份令牌而不是访问令牌来发出请求。这是为什么 ?还有没有办法我可以使用访问令牌?
【问题讨论】:
标签: google-cloud-platform google-cloud-run google-iam google-cloud-iam
我正在尝试连接到使用 Cloud Run(托管)运行的服务。该实例不是公开的,仅在开发中。因此,我使用 id 令牌进行身份验证,以验证此 link 中给出的连接。
我看到他们在这里使用身份令牌而不是访问令牌来发出请求。这是为什么 ?还有没有办法我可以使用访问令牌?
【问题讨论】:
标签: google-cloud-platform google-cloud-run google-iam google-cloud-iam
访问令牌适用于 Google 自己的 API (*.googleapis.com)。例如,Google 身份(服务帐户、用户帐户)的访问令牌允许他们调用 Google 的 API。
但是,“身份令牌”是您持有该帐户的证明。这些仍然是令牌,但它们已由 Google 签名以证明。您不能使用这些 API 调用 Google。
想象一下这种情况:有人入侵了您调用的私人服务。但是该 Cloud Run 服务无权执行任何操作。如果您发送了您的 access_token,他们可以拦截并提取它以在“调用者”服务的许可下进行 API 调用。但是,如果您发送您的 identity_token,除了证明“呼叫者”就是它声称的身份之外,它无法用于任何其他用途。
如果您在使用身份令牌时遇到问题,请随时提出另一个问题。
【讨论】:
除了Ahmet的回答(关于身份令牌和访问令牌的区别),我想补充一些见解
gcloud auth print-identity-token 命令并将结果传递给您的应用程序并在您的代码中使用它 -> 但是您在本地执行代码与您的用户帐户(以及 gcloud 命令技巧)之间失去了一致性,以及使用服务帐号在 GCP(或其他地方)上执行代码。希望这有助于了解如何继续前进。
【讨论】: