【问题标题】:Passing authentication from one Google Apps Script webapp to another Google Apps Script webapp将身份验证从一个 Google Apps Script webapp 传递到另一个 Google Apps Script webapp
【发布时间】:2014-07-08 06:09:31
【问题描述】:

我的 Google Apps 帐户中有两个 Google Apps 脚本。两者都已发布为具有以下设置的 web 应用程序。

脚本 A:

像我一样执行
谁有权访问网络应用程序:XXXXXXX.com 内的任何人

脚本 B:

以访问应用程序的用户身份执行
谁有权访问网络应用程序:XXXXXXX.com 内的任何人

我想让脚本 B 使用 UrlFetchApp 来执行脚本 A。如何将脚本 B 验证到脚本 A?

注意:

脚本 A 用于从只有我有权访问的电子表格中获取\写入数据。由于我的 Google Apps 域管理员 不允许域外共享,我无法设置对网络应用的匿名访问。

【问题讨论】:

    标签: google-apps-script google-apps


    【解决方案1】:

    我想让脚本 B 使用 UrlFetchApp 来执行脚本 A。如何将脚本 B 验证到脚本 A?

    即使脚本 A 设置为允许任何人访问它,我们的目标是保护它,以便只有脚本 B 能够发出有效请求。这可以使用脚本 A 和脚本 B 都可以访问的共享密钥轻松完成。当脚本 B 向脚本 A 发出请求时,它只需要包含密钥即可。脚本 A 可以拒绝任何不包含密钥的请求。

    只有能够查看脚本 A 或脚本 B 的源代码的人才能找到密钥。当然,任何获得秘钥的人都可以冒充脚本B。

    作为进一步的增强,您可以使用Utilities.computeHmacSha256Signature() 方法来避免将密钥作为请求的一部分发送。两个脚本仍然需要知道密钥,但您可以让脚本 B 计算 签名 并将其作为请求的一部分而不是密钥本身发送。

    【讨论】:

      【解决方案2】:

      没有匿名访问是不可能的。 您可以假装自己是浏览器,即查看您的浏览器在您运行 web 应用程序时发送的内容并发送相同的标头/cookie 等,但这并不是真正受支持的方式。

      【讨论】:

      • 感谢 Zig 的洞察力。还有其他方法可以实现我的目标吗?我试图允许我域中的一些用户从只有我有权访问的电子表格中读取\写入一些信息。脚本 B 的目的是收集用户的电子邮件地址
      • 有一些方法,但存在安全问题或其他问题。这个想法是让脚本 A 在 1 分钟的计时器上运行,并检查是否有东西要附加到你的 ss。我所说的东西是指与团队共享的另一个“队列”电子表格。缺点是用户如果好奇,就会看到并修改队列。为了解决这个问题,您可以将队列存储在其他地方,但请注意 scriptDb 已弃用。
      • 您还可以使用硬编码令牌手动调用驱动器 API(使用 urlfetch 和 http 驱动器 API)。确保用户看不到脚本。
      • 我对你提到的第二种方法很感兴趣。我必须使用驱动器 api 来写入电子表格吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      相关资源
      最近更新 更多