机密可以存储在Code.gs文件中吗?

时间:2018-07-03 15:45:37

标签: google-apps-script gmail-addons

由于我们可以从Gmail附加API获取用户的电子邮件地址,所以我想知道是否需要在用户与我们的外部服务进行交互之前使用OAuth对用户进行身份验证,或者我们是否可以依靠存储的机密来确保使用用户的电子邮件地址发出的请求实际上是来自使用Gmail加载项的用户。

由于应用程序脚本在Google的服务器上运行,并且用户无法修改,因此我们可以使用存储在Code.gs文件中的密钥,对外部API的请求中的请求主体进行HMAC处理。这样(也许可以?)确保此端点实际上已被Google击中,并且发出请求的人是给定电子邮件地址的所有者。

要使此方法有效,尽管代码中的秘密实际上需要保密,否则任何人都可以使用任何电子邮件地址访问该端点并代表其他用户发布数据。那么这种方法是否有效,或者还有其他可行的解决方案吗?

否则,我们可以只实现OAuth,但是如果有一种更简单的方法是安全的,那就更好了。

1 个答案:

答案 0 :(得分:0)

假设您的外部API只需一个API密钥(一个秘密)即可授权用户。您绝对可以使用Properties Service进行存储。

但棘手的是,不同的用户可能具有不同的API密钥。要解决此问题,我们可以要求用户在UI中输入API密钥(不过不能屏蔽)。 这是一种非常简单的方法。

但是,我建议使用OAuth,因为这是一种更干净的方法。