繁体   English   中英

如何验证谷歌服务帐户凭据

[英]How to authenticate google service account credentials

我有一个来自谷歌控制台的谷歌服务帐户私钥(json 格式)。 如何在 golang 中创建一个新客户端(我使用什么 google api)并在不设置环境变量的情况下验证我获得的凭据? 我想在 Golang 中手动提供 Google 服务帐户凭据。 我首先将 json 文件作为字节数组传递: creds, err:= google.CredentialsFromJSON(ctx, blob) Blob 是 json 文件的字节数组。 即使我更改了私钥(哎哟),我也可以使用 cloud.google.com/go/secretmanager/apiv1 成功创建客户端。 所以我想知道在什么时候以及如何验证信用? 谢谢。

问题不清楚。 我允许自己将其改写为“如何从服务帐户的密钥文件创建有效凭证?
好吧,谷歌确实实施了一种策略,为调用进程提供经过身份验证的身份。 从粗略的角度来看,它确实在寻找一个名为 GOOGLE_APPLICATION_CREDENTIAL 的环境变量定义,该值包含有效 SA 密钥文件的路径。 否则,它会使用它运行的计算部分的默认服务帐户(GCE、GKE pod、Appengine、云 function,...)。
否则最后你会得到一个错误。

在本地工作,设置此默认凭据的一个好习惯是使用云 SDK 和命令gcloud auth application-default login 这样应用程序将代表登录的人(例如您并使用您的权限和配额)行事。
否则,您可以手动设置 env var 以指向您下载的服务帐户的密钥文件。

现在,如果你从谷歌云环境中运行,你可以像你一样手动构建凭证,不使用密钥文件。 下面的例子是明确的。 您必须了解的是,您伪造的凭据是任何 Google API 客户端构造函数的参数。
使用您的凭据构建 API 客户端后,您只需调用它公开的方法即可使用它。 身份验证发生在幕后。 对 Google API 的每次调用都使用 OAuth2 令牌进行身份验证, 此处描述了检索流程。 如果您需要被说服,您可以深入研究客户端 API 的源代码客户端,但好处是您不必这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM