【问题标题】:Limit Scope to single file in Google Auth JWT client for Google service account将范围限制为 Google 服务帐户的 Google Auth JWT 客户端中的单个文件
【发布时间】:2021-02-16 21:18:04
【问题描述】:

我正在使用服务帐户来生成访问令牌以访问我的谷歌驱动器中的某些工作表。该访问令牌将发送给客户端用户,并使用该用户将访问我的工作表。但是不同的用户可以访问不同的工作表,我希望他们防止使用相同的访问令牌访问其他工作表。目前,服务帐号可以访问我的应用使用的所有文件。

为了生成访问令牌,我使用googleapisgoogle.auth.JWT 模块。我使用 Firebase 云函数作为 Node 版本 10 的后端

这是我的代码,

        try {
            const jwtClient = new google.auth.JWT(
                key.client_email,
                null,
                key.private_key,
                ['https://www.googleapis.com/auth/drive',],     // drive scope
            );

            const accessToken = await jwtClient.authorize();

        } catch (error) {
            console.log(error)
            res.status(500).json(error)
        }

提前致谢

【问题讨论】:

  • 检查 drive.file 范围认为它将仅限于应用程序本身创建的文件。
  • 当前答案是正确的。您的模式是一种反模式:您将服务帐户的身份令牌发送到外部,任何人都可以代表服务帐户访问文档。您不知道谁访问了该文档,谁更改了它们……只有一条建议:不要那样做!

标签: google-api google-cloud-functions google-authentication service-accounts google-api-nodejs-client


【解决方案1】:

如果服务帐户的权限使令牌可以完全访问文件夹中的每个文件,这些令牌也将允许读取其他文档。我认为您可以通过更改文件本身的权限而不是提供通用访问令牌来解决此问题,从而授予特定用户对一组文档的权限。 Drive documentation 的这个页面描述了如何在文件级别更改权限并提供了一些 Node.js 示例。

【讨论】:

  • 是的,我试过你的方法。但它需要用户有一个谷歌帐户,对吗?我正在尝试在没有用户通过他的谷歌帐户登录的情况下执行此操作,并且它还要求我们通过他们从未回复过的谷歌应用程序验证过程。谢谢你的回答。
  • @MaheeGamage 是的,他们需要谷歌帐户,请参阅answer
猜你喜欢
  • 2018-06-22
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 2022-10-09
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多