2

我正在遵循使用嵌入式仪表板进行行级别过滤教程来构建一个安全的多租户仪表板,使用 Data Studio 作为报告 UI/后端(以及Anvil作为 Python 中的前端),目的是过滤来自 BigQuery 的数据基于特定用户权限的表。

我已按照建议成功完成初始连接器教程。到目前为止,我还成功完成了以下步骤(1-4):

  1. 在 Anvil 中构建用户身份验证并在user表中设置权限(JSON 包含每个用户可以查看的特定字段值)
  2. 在 Anvil中创建的构建机制access_token,基于用户和 unix 时间戳组合的十六进制 md5 哈希,有效期为一小时
  3. 在 Anvil 中安全地设置和存储app_secret以验证入站请求
  4. 在 Anvil 中创建 API 端点,该端点验证app_secret并验证access_token并返回包含user_emailpermitted_accounts

现在我要构建自定义连接器了,目的是构建流程的下一部分:

  1. 根据本access_token,通过编码并将其包含在嵌入 URL 中(报告将通过 iFrame 嵌入)传递到数据洞察
  2. access_token根据语句“这将用于从嵌入 URL 的参数中捕获令牌”从 App 脚本中的嵌入 URL 中提取。从这个部分
  3. app_secret使用 App Script 中的and访问 API 端点access_token以验证并接收与access_token通过 Anvil 的 IF 验证检查相关的用户权限,否则返回适当的错误消息
  4. 根据用户权限构建查询并使用这种方法从 BigQuery 获取数据 ......然后设置架构等......

但是,在到达此流程的第 6 步时,我需要从access_tokenURL中解析token对我来说毫无意义,因为让用户不断手动转置一个短暂的令牌似乎否定了这个练习的意义)。

我也无法在API 参考中找到有关如何实现此目的的文档。

请,有人知道如何从应用脚本社区连接器中的报告嵌入 URL 中捕获参数吗?我认为从文档中是可能的:

getConfig() 应该返回至少一个配置项。这将用于从嵌入 URL 的参数中捕获令牌。

感谢您抽出宝贵时间!

4

1 回答 1

0

一个。我假设access_token你的getConfig.

湾。创建初始报告时,在创建数据源期间,您可以在access_tokenconfig 字段中输入任何值。但是,请选中“允许在报告中修改“access_token””框。这意味着,报表查看者将能够覆盖此值,即使他们没有对报表或数据源的编辑权限。

C。确认您的 setp #5 正在按照此处的说明传递access_token.

d。而已。现在,您access_token在初始报告创建期间投入的价值无关紧要。对于用户 X,您的门户将值hash(user, timestamp)作为access_token. 在连接器的getData函数中,request.configParams.access_token将返回该特定值。然后,您可以使用该值调用您的端点以取回用户身份。

于 2021-08-25T23:18:43.660 回答