当前位置: 首页 > 知识库问答 >
问题:

node.js使用凭证令牌的谷歌云存储认证

高琛
2023-03-14

我试图与谷歌云存储使用凭证令牌进行身份验证。在node.jsGCS api文档中找不到关于如何做到这一点的示例。它们指示生成并下载包含私钥的json文件,然后链接到文件系统上的路径,如下所示:

const storage = new Storage({keyFilename: "key.json"});

这个很好用。

然而,我不想将我的密钥保存为JSON文件,而是创建凭据并将其保存为环境变量:

const gc = new Storage({
    credentials: {
      client_email: process.env.CLIENT_EMAIL,
      private_key: process.env.SECRET_KEY
    }
});

我尝试使用服务号HMAC访问密钥从桶的设置、互操作性菜单中获取此令牌。

当我尝试使用上面的身份验证方法从bucket上传/删除文件时,我得到以下错误:

错误:错误:0909006C:PEM例程:获取名称:无起始行

感谢在这件事上的任何帮助

共有1个答案

夏理
2023-03-14

>

错误:错误:0909006C:PEM例程:获取名称:无起始行

实际上是因为我刚才下载了一个dotenv ohmyzsh插件而导致的,只是忘记了。很难调试。原来google密钥中有\n,ohmyzsh dotenv插件无法正确解析它们。所以删除它对我来说很有效。

如果您使用JSON api(很可能是),这些是您需要进行身份验证的凭据,因此如果您不喜欢将JSON文件的路径放在项目中的.env文件中,您只需获取相关信息即可:

const gc = new Storage({
      projectId: process.env.GOOGLE_STORAGE_PROJECT_ID,
      scopes: 'https://www.googleapis.com/auth/cloud-platform',
      credentials: {
        client_email: process.env.GOOGLE_STORAGE_EMAIL,
        private_key: process.env.GOOGLE_STORAGE_PRIVATE_KEY
      }
})

我仍然不能100%确定如何使用令牌秘密进行身份验证。我正在接近答案,如果我找到了,将来会更新这个帖子。发布一个有用的链接:google-auth库nodejs希望有人打败我:)

 类似资料:
  • 我建立Android应用程序链接到谷歌云存储。我想允许访问GCS到我的Android应用程序只。 谷歌提供三种安全连接地面军事系统的解决方案: Oauth 2.0(谷歌账户也是如此) 资料来源:https://developers.google.com/storage/docs/authentication?hl=FR 是否有其他通过地面军事系统安全连接的解决方案?我希望通过这种方式在地面军事系统

  • 我有一个关于谷歌云存储的新手问题。我希望创建一个网站,人们可以上传文件(在概念上类似于Flickr)并查看它们。我在看谷歌的云存储选项,它看起来很有趣。我在认证过程中有点挂断了。是所有用户都需要谷歌账户,还是我只是误读了?我想我的问题是,我能创建一个每个人都不必注册谷歌账户的网站吗?谢谢你的耐心和帮助

  • 我找到的签名Google云存储Blob的示例和源代码都需要服务帐户凭据文件(私钥是特定的)。例如: https://cloud.google.com/storage/docs/access-control/signing-urls-with-helpers#storage-签名url获取对象python 但是,由于我遵循此处讨论的授权流程,因此我只有OAuth2.0访问令牌(并且我没有能够访问GC

  • 我很难让GCS JSON API中的“简单上传”方法在Python中工作。文件(https://developers.google.com/storage/docs/json_api/v1/how-tos/upload#simple)使它看起来微不足道,但我无法通过授权。我不完全理解授权/身份验证/密钥/令牌,但我正在尝试。我一直试图上传的bucket允许完全读写(它们是公共的),我已经生成并尝试

  • 这里的文档说生产应用引擎项目应该有权访问默认凭据?: “3.如果您正在谷歌App Engine生产中运行,将使用与应用程序关联的内置服务帐户。” 是不是我漏了什么装置? 我的应用程序引擎版本(gradle):

  • 我尝试使用下面列出的示例对存储API进行JWT调用,并做了如下更改- 在这里叫它 但是获取错误as无法解析指定的URI。非法URI。 我不明白为什么它是一个非法的URI。我尝试了https://googleapis.com/storage/b/BUCKETNMAE,但还是一样的错误。在SO或谷歌文档上找不到任何关于这个的东西。任何想法我在这里做什么错了吗?