2

我在内部企业环境中编写了数千行 Apps 脚本,但一段时间以来一直在为此绞尽脑汁,但没有任何成功。这是用例:

  • App Script #1 由我们组织中具有日历读/写权限的用户运行。但是,为了正确操作,它需要访问某些数据,这些数据只能由具有不同权限的单独用户访问。
  • App Script #2 作为第二个用户运行,并通过返回请求信息的 doPost() 或 doGet() 提供 API 端点。

出于安全原因,无法授予用户#1 用户#2 所需的全部权限,因此用户#2 希望公开一个API,该API 仅向用户#1 提供一组非常特定的信息。

最直观的解决方案似乎是让用户 #2 部署一个 Apps 脚本,其中“将应用程序执行为”字段设置为“我”,并将“谁有权访问该应用程序”字段设置为组织的 GSuite 域(出于安全原因,这必须限制在组织内部)。

但是,如果用户 #1 然后尝试使用 UrlFetchApp 访问该端点,则请求将失败(我相信使用 HTTP 403),因为该请求确实包含一个会话令牌来证明该请求来自同一个 GSuite 组织。Google 似乎没有提供生成此类会话令牌的方法;尝试设置值为“Bearer”+ ScriptApp.getOAuthToken() 的“授权”标头不起作用。

我还尝试使用 Apps Script API 让用户 #1 执行用户 #2 部署的脚本,但是 Apps Script API 清楚地表明脚本只能在调用用户的上下文中执行。

我还单独阅读过 Google Apps 脚本不能很好地与服务帐户配合使用 ( https://issuetracker.google.com/issues/36763096 )。

希望我遗漏了一些明显的东西。有任何想法吗?

4

0 回答 0