1

我已经使用已与 Alexa 成功集成的 Python 构建了一个应用程序。由于这个应用程序非常适合我的家庭,我不太关心部署过程,因为您可以永远在开发模式下运行(或者看起来)。

但是,在阅读有关部署过程的信息时,特别是验证请求实际上来自亚马逊而不是其他人的安全要求时,我了解到这些相同的要求无论如何都是一个好主意

因此,为了部署,亚马逊要求您验证来自亚马逊对您的 Alexa 应用程序的请求。基本上,它分为两个部分:

  • 验证请求实际上来自亚马逊
  • 验证时间戳以防止重放攻击

我的整个应用程序都是用 Python 构建的,但 Alexa 前端是用 Flask-Ask 构建的,并使用 Apache2 和 WSGI。有很多资源可以用来学习如何使用 Java、JS 甚至是一些直接的 Python 来验证 Amazon 请求,但是我根本找不到任何关于如何专门使用 Flask-Ask 来完成此任务的信息。

所以我的问题是如何使用 Flask-ask 来完成这个任务?

谢谢!

4

1 回答 1

1

根据源代码(以及文档,由于站点关闭,我现在无法访问)有这些相关的配置选项:

Ask 实例通过调用 Flask 的配置获得以下配置变量:

ASK_APPLICATION_ID:通过将此变量设置为应用程序 ID 或允许的应用程序 ID 列表来打开应用程序 ID 验证。默认情况下,禁用应用程序 ID 验证并记录警告。此变量应在生产环境中设置,以确保您指定的应用程序正在发送请求。默认值:无

ASK_VERIFY_REQUESTS:启用或禁用 Alexa 请求验证,以确保发送到您的技能的请求来自亚马逊的 Alexa 服务。不应在生产中禁用此设置。它对于在自动化测试中模拟 JSON 请求很有用。默认值:真

因此,默认情况下,每个请求都已经过验证。

此外,您可以添加ASK_APPLICATION_ID以确保请求来自您的技能:

app = Flask(__name__)
ask = Ask(app, '/')
app.config["ASK_APPLICATION_ID"] = ["skill-id-1", "skill-id-2"] # List of allowed IDs
于 2019-04-19T08:55:52.943 回答