提问人:Amitava Karan 提问时间:2/22/2017 更新时间:8/15/2019 访问量:2544
使用不带 json 文件的 Google 应用程序默认凭据
use Google Application Default Credentials without json file
问:
我使用 c# 创建了一个控制台应用程序。我使用了谷歌云语音 api。我按照此示例应用程序创建应用程序。 为了验证语音 api,我在 main 方法中编写了以下代码
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "path-to-json-file", EnvironmentVariableTarget.Process);
一切正常。我的问题,我必须将exe与json文件一起发布。我不想暴露json文件。如何在代码中嵌入json文件内容或在没有json文件的情况下进行身份验证? 这样我只能将 exe 发送给用户。
对此的任何帮助将不胜感激。
谢谢。
答:
-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 方法没有类似的重载
评论