【问题标题】:Which part of the private key for service accounts in Google Cloud Platform do I actually use?我实际使用 Google Cloud Platform 中服务帐户的哪一部分私钥?
【发布时间】:2019-10-26 06:04:01
【问题描述】:

我正在尝试验证private_key 是否正确,如this SO question 中所述。

Docs about service account private keys are here.

{
"type": "service_account",
"project_id": "[PROJECT-ID]",
"private_key_id": "[KEY-ID]",
"private_key": "-----BEGIN PRIVATE KEY-----\n[PRIVATE-KEY]\n-----END PRIVATE KEY-----\n",
"client_email": "[SERVICE-ACCOUNT-EMAIL]",
"client_id": "[CLIENT-ID]",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/[SERVICE-ACCOUNT-EMAIL]"
}

当使用private_key 时,我是否只获取两者之间的部分

-----BEGIN PRIVATE KEY-----\n

字符串和

\n-----END PRIVATE KEY-----\n

也就是说,示例中显示的[PRIVATE-KEY]

或者我得到整个字符串,包括上面显示的两个“书挡”字符串?

此外,在[PRIVATE-KEY] 字符串中,\n 子字符串出现了多次。我是删除它们还是保留它们?

【问题讨论】:

  • 私钥是"-----BEGIN PRIVATE KEY-----\n[PRIVATE-KEY]\n-----END PRIVATE KEY-----\n",如 JSON 文件中所示。所以请使用"-----BEGIN PRIVATE KEY-----\n[PRIVATE-KEY]\n-----END PRIVATE KEY-----\n" 作为keyvar firestore = FirestoreApp.getFirestore(email, key, projectId);。但我认为发布这个问题可能已经尝试过[PRIVATE-KEY]"-----BEGIN PRIVATE KEY-----\n[PRIVATE-KEY]\n-----END PRIVATE KEY-----\n"。如果是的话,能否解释一下获取JSON文件的方法?
  • @Tanaike:是的,我测试了所有可能的选项。我将详细说明并仔细检查我检索 JSON 文件的方法。但与此同时,请注意,在这个 SO 答案中 ...stackoverflow.com/a/55472398... 他们说“您只需从 .json 文件中复制 -----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n 之间的部分。”他们错了吗?
  • 虽然我不确定线程​​,但私钥是"-----BEGIN PRIVATE KEY-----\n[PRIVATE-KEY]\n-----END PRIVATE KEY-----\n",如JSON文件所示。如果[PRIVATE-KEY] 用于the library 作为私钥,则会发生错误。当你测试"-----BEGIN PRIVATE KEY-----\n[PRIVATE-KEY]\n-----END PRIVATE KEY-----\n"作为私钥时,出现错误,我认为检索JSON文件的方法可能有问题。
  • 我不认为他们错了,因为 FirestoreGoogleAppsScript 最终将密钥传递给 this function,它使用了整个块,包括 -----BEGIN PRIVATE KEY----- 样板。
  • 如果您对如何使用 Google 服务帐户私钥感到好奇,我用 Python 写了一篇文章来展示使用方法。 jhanley.com/…

标签: google-app-engine google-apps-script google-cloud-platform


【解决方案1】:

这个问题也和another question有关,所以调试的时候要注意类似的症状。

故障排除步骤:

  1. 验证 JSON 文件是为您的服务帐户生成的文件
  2. 验证 JSON 文件是否被正确读取。
  3. 验证您使用的是正确的 Firebase 方法

结论:

这个 Firebase 身份验证问题是由错误的 JSON 读取引起的。

请务必注意,私钥旨在与“无用”信息一起使用,因为method to decode 私钥期望这些字符串存在。

TL;DR

问题在于正确读取 JSON 文件。

感谢@Tanaike@Tedinoz 提供故障排除步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 2020-07-11
    • 2021-03-04
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多