"gcloud auth application-default login" 和 "gcloud auth login" 之间的区别

Difference between "gcloud auth application-default login" and "gcloud auth login"

gcloud auth application-default logingcloud auth login 有什么区别?

尽管有以下定义,但仍然很难区分它们。

gcloud auth application-default login :

gcloud 身份验证登录 :

我什么时候应该使用一个而不是另一个?

区别在于用例:

作为开发人员,我想通过 gcloud 与 GCP 进行交互。
gcloud auth login
这将获取您的凭据并将它们存储在 ~/.config/gcloud/ 中。现在您可以从终端发出 运行 gcloud 命令,它会自动找到您的凭据。在这种情况下,任何 code/SDK 都 不会 自动获取您的积分。

参考:https://cloud.google.com/sdk/gcloud/reference/auth/login

作为开发人员,我希望我的代码通过 SDK 与 GCP 交互。
gcloud auth application-default login
这将通过网络流程获取您的凭据并将其存储在 'the well-known location for Application Default Credentials' 中。现在任何 code/SDK 您 运行 都可以自动找到凭据。当您想在本地测试通常在服务器上 运行 并使用服务器端凭据文件的代码时,这是一个很好的替代方法。

参考:https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login

编辑 (09/19/2019):
正如肯特在下面的评论中所贡献的那样,'the well-known location for Application Default Credentials' 是一个名为 application_default_credentials.json 的文件,位于您的本地 ~/.config/gcloud/ 目录中。我在 Theodore SuiDaniel De Leo 的一篇文章下面添加了一个额外的 link,其中更详细地介绍了不同的身份验证方法。

文章: https://medium.com/google-cloud/local-remote-authentication-with-google-cloud-platform-afe3aa017b95

我将此添加为答案,因为我没有资格发表评论。我认为@Himal 的回答是正确的,但我想澄清一下,当它说 code/SDK 时,我们应该考虑代码或语言 (Java/Ruby/Python) SDK v/s gcloud SDK(这是也称为 Cloud SDK)。这让我有点困惑,因为我也有同样的疑问

所以, gcloud auth login -> 登录 gcloud SDK

gcloud auth application-default 登录 -> 登录计算机上的任何代码 运行(应用程序中的语言 SDK)

在浏览器 windows 的 OAuth 身份验证屏幕中还有一个 give-away 打开:

gcloud auth login 要求您选择一个帐户以继续授予对 'google cloud sdk' 的访问权限。

gcloud auth application-default login 要求您授予对 google 授权库的访问权限。