Как проверить запрос Alexa при запуске Flask-Ask и Apache2 с WSGI - PullRequest
0 голосов
/ 09 февраля 2019

Я создал приложение с использованием Python, которое успешно интегрировал с Alexa.Так как это приложение очень специфично для моей семьи, я не слишком беспокоился о процессе развертывания, поскольку вы можете работать в режиме разработки вечно (или, казалось бы).

Однако, читая о процессе развертывания, в частности о требованиях безопасности для проверки того, что запросы действительно поступают от Amazon, а не от кого-то другого, я узнал, что эти же требования хорошая идеянезависимо от !

Таким образом, для развертывания Amazon требуется, чтобы вы проверяли запросы от Amazon к своему приложению Alexa.По сути, он разбит на два раздела:

  • Убедитесь, что запрос действительно поступает из Amazon
  • Проверьте временную метку, чтобы предотвратить атаки воспроизведения

Все мое приложение построено на Python, но внешний интерфейс Alexa построен на Flask-Ask и использует Apache2 и WSGI.Существует множество ресурсов для изучения того, как проверять запросы Amazon с использованием Java, JS и даже некоторого простого Python, но я ничего не мог найти, как выполнить это специально с помощью Flask-Ask.

Итакмой вопрос, как мне сделать это с помощью Flask-Ask?

Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2019

В соответствии с исходным кодом (а также документацией, к которой я не могу получить доступ сейчас, потому что сайт не работает) существуют следующие соответствующие параметры конфигурации:

Запросэкземпляру присваиваются следующие переменные конфигурации при вызове конфигурации Flask:

ASK_APPLICATION_ID: включите проверку идентификатора приложения, задав для этой переменной идентификатор приложения или список разрешенных идентификаторов приложения.По умолчанию проверка идентификатора приложения отключена, и предупреждение регистрируется.Эта переменная должна быть установлена ​​в рабочей среде, чтобы гарантировать, что запросы отправляются указанными вами приложениями.По умолчанию: Нет

ASK_VERIFY_REQUESTS: Включает или отключает проверку запросов Alexa, которая гарантирует, что запросы, отправленные на ваш навык, поступают из сервиса Amazon Amazon.Этот параметр не должен быть отключен в производстве.Это полезно для проверки JSON-запросов в автоматических тестах.По умолчанию: True

Итак, по умолчанию каждый запрос уже проверен.

Кроме того, вы можете добавить ASK_APPLICATION_ID, чтобы убедиться, что запрос от вашего навыка:

app = Flask(__name__)
ask = Ask(app, '/')
app.config["ASK_APPLICATION_ID"] = ["skill-id-1", "skill-id-2"] # List of allowed IDs
...