簡體   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