用于Dialogflow身份验证的google操作中用户身份的可靠性

时间:2018-01-10 16:13:20

标签: security authentication http-post actions-on-google dialogflow

我目前正在https://passportjs.org开发Dialogflow策略。

根据我的了解,Dialogflow不会对用户进行身份验证。所以我正在考虑制定一个策略(针对passportjs),以不同的方式识别每个平台的用户(对每个平台分析originalRequest不同。)

例如,电报originalRequest有此字段:

originalRequest.data.message.from.id

电报说这个领域是:

  

“此用户或机器人的唯一标识符”

所以我认为使用它进行身份验证是安全的,并确定我的webhook实现的用户的每个意图。

我想知道google身份验证操作,我找到了originalRequest.data.user.userId字段。

The documentation说:

  

“用户可以重置此标识符,因此不要存储键入此标识符的重要用户数据,因为一旦重置,用户将无法再访问该信息。”

所以不信任userId的唯一原因是因为它可以被重置?在文档的最后,它说:

  

用户ID生命周期 - 用户ID会在30天不活动后自动重置,或者如果用户在设备上取消其帐户关联,则会自动重置。

  

“如果设备无法识别注册用户的语音或者没有注册的语音,则使用不同的ID,该ID对于该对话而言是唯一的。”

如何区分用户?可以回收一些ID吗?

1 个答案:

答案 0 :(得分:2)

区分用户的最佳方法是使用userId字段,如您所确定的那样。在AoG平台上,userId的使用方式有点像可以使用的网络cookie - 如果你再次看到它,你可以确信这是上次使用它的用户。但是如果你看到一个新的,你必须假设你以前从未见过这个用户,即使这意味着他们删除了cookie。

要明确 - 大多数情况下,UserId将保持不变,并且您可以期望返回的用户具有相同的ID。仅在三种情况下,这不会成为现实:

  1. 他们已重置此操作的ID。所以他们故意选择重新开始。
  2. 他们没有使用Action 30天,在这种情况下,在大多数情况下将它们视为全新的用户是有意义的。
  3. 他们未被识别为此设备的正常用户,因此他们会被匿名处理。 (这相当于笨重的"在这台机器上不记得我"设置你在网站上看到,这会强制会话cookie而不是持久cookie。)
  4. 文档中的措辞很差 - 我认为这是为了提醒开发人员用户最终负责他们的隐私。谷歌也强迫你做同样的事情并采取这样做的政策。

    ID不会被回收。事实上,他们甚至不会在不同的行动之间重复使用,即使对于同一助理帐户也是如此。

    摘要:如果您看到相同的UserId,则可以相信它与您之前看到的用户相同。如果您看到一个新用户,则假设他们是新用户。

    如果您想要一种更强大的方法来识别用户,您可以考虑使用帐户链接来控制识别令牌。但这有很大的额外开销。

    使用其他身份验证方法时要小心--Google限制了您如何将其作为操作的一部分使用,并在某些情况下明确禁止它们。有关详细信息,请参阅General Policies