使用面向开发人员的访问令牌对 Cloud Run 进行身份验证
Authenticating CloudRun with Access Token for Developers
我正在尝试使用云 运行(托管)连接到服务 运行。该实例不是 public,仅在开发中。因此,我正在使用 id 令牌对连接进行身份验证,如此 link.
中给出
我看到他们在这里使用身份令牌而不是访问令牌来发出请求。这是为什么 ?还有我可以改用访问令牌的方法吗?
访问令牌适用于 Google 自己的 API (*.googleapis.com)。例如,Google 身份的(服务帐户、用户帐户)访问令牌允许他们调用 Google 的 API。
但是,“身份令牌”是您拥有该帐户的证明。这些仍然是令牌,但它们由 Google 签名以证明。您不能使用它们对 Google.
进行 API 调用
想象一下这种情况:有人入侵了您正在呼叫的私人服务。但是 Cloud 运行 服务无权执行任何操作。如果您发送 access_token,他们可以拦截并提取它以在“呼叫者”服务的许可下进行 API 呼叫。但是,如果您发送 identity_token,除了证明“来电者”是它所声称的身份外,它无法用于任何其他用途。
如果您在使用身份令牌时遇到问题,请随时提出另一个问题。
除了 Ahmet 的回答(关于身份令牌和访问令牌之间的区别),我想补充一些见解
- 您不能在您的代码中使用您的用户凭据生成身份令牌(至少一个 Google 签名的身份令牌,由 Google 前端接受)
- 因此,您需要有一个服务帐户密钥文件才能在您的代码中生成身份令牌
- 解决方法是使用
gcloud auth print-identity-token
命令并将结果传递给您的应用程序并在您的代码中使用它 -> 但是您在本地执行代码与您的用户帐户(和 gcloud命令技巧),以及使用服务帐户在 GCP(或其他地方)上执行代码。
希望这有助于了解如何继续前进。
我正在尝试使用云 运行(托管)连接到服务 运行。该实例不是 public,仅在开发中。因此,我正在使用 id 令牌对连接进行身份验证,如此 link.
中给出我看到他们在这里使用身份令牌而不是访问令牌来发出请求。这是为什么 ?还有我可以改用访问令牌的方法吗?
访问令牌适用于 Google 自己的 API (*.googleapis.com)。例如,Google 身份的(服务帐户、用户帐户)访问令牌允许他们调用 Google 的 API。
但是,“身份令牌”是您拥有该帐户的证明。这些仍然是令牌,但它们由 Google 签名以证明。您不能使用它们对 Google.
进行 API 调用想象一下这种情况:有人入侵了您正在呼叫的私人服务。但是 Cloud 运行 服务无权执行任何操作。如果您发送 access_token,他们可以拦截并提取它以在“呼叫者”服务的许可下进行 API 呼叫。但是,如果您发送 identity_token,除了证明“来电者”是它所声称的身份外,它无法用于任何其他用途。
如果您在使用身份令牌时遇到问题,请随时提出另一个问题。
除了 Ahmet 的回答(关于身份令牌和访问令牌之间的区别),我想补充一些见解
- 您不能在您的代码中使用您的用户凭据生成身份令牌(至少一个 Google 签名的身份令牌,由 Google 前端接受)
- 因此,您需要有一个服务帐户密钥文件才能在您的代码中生成身份令牌
- 解决方法是使用
gcloud auth print-identity-token
命令并将结果传递给您的应用程序并在您的代码中使用它 -> 但是您在本地执行代码与您的用户帐户(和 gcloud命令技巧),以及使用服务帐户在 GCP(或其他地方)上执行代码。
希望这有助于了解如何继续前进。