0

我正在使用下面的代码来访问服务帐户凭据,不确定由于秘密管理器在其 Create() 中不接受凭据,因此我按照https://cloud.google.com/docs/尝试了第二种方法身份验证/生产#passing_code。我究竟做错了什么?

        var text = File.ReadAllText(@"cred.json");
        JObject credential = JObject.Parse(text);

        SecretManagerServiceClientBuilder secretManagerServiceClientBuilder = new SecretManagerServiceClientBuilder()
        {
            JsonCredentials = o1,
        };
        SecretManagerServiceClient client = secretManagerServiceClientBuilder.Build();
        // Create the client.
        client = SecretManagerServiceClient.Create();
4

1 回答 1

0

找到了解决方案 -

通过代码访问服务帐户可以通过两种方式完成 -

  1. 检查 API 是否像存储桶一样接受 create 方法中的凭据,然后使用第一种方法。

        var credential = GoogleCredential.FromFile(jsonPath);
        var storage = StorageClient.Create(credential);
    
  2. 如果 create() 不接受参数,则使用该 API 的构建器,例如 SecretManagerServiceClientBuilder 用于密钥管理器,KeyManagementServiceClientBuilder 用于 KMS。只需将 create 部分替换为 builder 部分。

    var text = File.ReadAllText(@"cred.json");
    SecretManagerServiceClientBuilder secretManagerServiceClientBuilder = new SecretManagerServiceClientBuilder()
    {
        JsonCredentials = text,
    };
    SecretManagerServiceClient client = secretManagerServiceClientBuilder.Build();
          SecretVersionName secretVersionName = new SecretVersionName(projectId, secretId, secretVersionId);
    
        // Call the API.
        AccessSecretVersionResponse result = client.AccessSecretVersion(secretVersionName);
    
        // Convert the payload to a string. Payloads are bytes by default.
        String payload = result.Payload.Data.ToStringUtf8();
    
于 2021-03-05T08:44:59.067 回答