使用不带 json 文件的 Google 应用程序默认凭据

use Google Application Default Credentials without json file

提问人:Amitava Karan 提问时间:2/22/2017 更新时间:8/15/2019 访问量:2544

问:

我使用 c# 创建了一个控制台应用程序。我使用了谷歌云语音 api。我按照示例应用程序创建应用程序。 为了验证语音 api,我在 main 方法中编写了以下代码

Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "path-to-json-file", EnvironmentVariableTarget.Process);

一切正常。我的问题,我必须将exe与json文件一起发布。我不想暴露json文件。如何在代码中嵌入json文件内容或在没有json文件的情况下进行身份验证? 这样我只能将 exe 发送给用户。

对此的任何帮助将不胜感激。

谢谢。

google-cloud-speech

评论


答:

-1赞 T.Todua 2/26/2018 #1

您可以存储加密的密钥文件,然后在应用程序启动时解密该文件,并在几毫秒内(在读取内容并初始化后)重写解密的内容。

另一种解决方案可能是从服务器抓取(加密)并存储在应用程序变量(解密)中并对其进行初始化,然后在启动后删除文件。

评论

1赞 MrCalvin 8/14/2019
但是,如何使用存储在应用程序变量中的凭据进行身份验证呢?我不想把它写到json文件中,让API读取它,然后再次删除JSON文件,这真的很丑。
0赞 T.Todua 8/14/2019
@MrCalvin如果您知道更好的解决方案,请告诉我,我也在寻找。
0赞 MrCalvin 8/14/2019
我最终可能会将 json 序列化为代码,加密 ,将其序列化回文件。但是让我们看看是否有人有更好的解决方案;-)在我找到这个线程之前,我在这里问了一个类似的问题(对不起重复)private_key
2赞 Rambalac 2/12/2021
答案与问题无关。它没有回答如何在没有必须解密的 json 文件的情况下提供凭据。
0赞 T.Todua 2/13/2021
@Rambalac有趣的;)GL型
1赞 MrCalvin 8/15/2019 #2

对于存储api,我找到了这个解决方案:

 Google.Apis.Auth.OAuth2.GoogleCredential cred = Google.Apis.Auth.OAuth2.GoogleCredential.FromJson(JSONString);
 var storage = Google.Cloud.Storage.V1.StorageClient.Create(cred);

我可以很容易地想象其他 api 也可以做同样的事情

评论

0赞 Arthur 6/30/2021
太糟糕了 Google DLP 服务 Create 方法没有类似的重载