Аутентификация встроенных устройств для отправки push-уведомлений с помощью Amazon SNS

Я разрабатываю платформу, на которой большое количество встроенных устройств с поддержкой облака будет отправлять push-уведомления в мобильные приложения с помощью Amazon SNS.

Каждое встроенное устройство должно создавать тему в социальных сетях и опубликуйте в этой теме. Пользователи зарегистрируются в теме и получат эти уведомления.

Мой вопрос: как встроенные устройства должны обрабатывать аутентификацию / авторизацию с помощью AWS, чтобы создавать темы и публиковать уведомления. Вот варианты, которые я рассмотрел до сих пор:

  • Создайте одного пользователя IAM, который будет «совместно использоваться» всеми встроенными устройствами. Плохая идея: если взломано одно устройство, все они будут скомпрометированы.
  • Создайте другого пользователя IAM для каждого встроенного устройства. Это может быть вариантом, но AWS ограничивает это 5000
  • . Настроить промежуточный сервер, который общается с AWS; для сервера будет создан пользователь IAM. Затем сервер генерирует временные учетные данные по запросу для встроенных устройств, и устройства используют их для аутентификации в AWS. Мне это не нравится, потому что это вводит дополнительную зависимость / единую точку отказа (промежуточный сервер).

Какие еще у меня есть варианты? Уверен, что я не первый, кто столкнулся с этой проблемой.

1
задан 26 April 2018 в 13:13
1 ответ

Вы можете сделать что-то вроде этого: Secure Authentication Flow

Предварительные требования и установка:

  1. Установите Javascript SDK на ваше встроенное устройство (поскольку вы не упомянули ограничения устройства, эта архитектура предполагает, что ваше устройство достаточно способно запускать Javascript SDK)
  2. Создать «Пул пользователей» в Cognito (либо через консоль AWS, либо через API, интерфейс командной строки и т. д.)
  3. В рамках начальной настройки устройства зарегистрируйте нового пользователя для каждого устройства, используя уникальные атрибуты, соответствующие вашей архитектуре, целевой аудитории приложения и бизнес-модель

Поток аутентификации:

  1. Когда вы хотите отправить новое сообщение в SNS, происходит следующее:
  2. Ваше приложение (на встроенном устройстве) инициирует безопасную удаленную аутентификацию по паролю с Cognito (через SDK методы, конечно)
  3. Если запрос аутентификации выполнен успешно, Cognito отвечает токеном
  4. Ваше приложение использует токен и вызывает конечную точку POST, предоставленную шлюзом API, и аутентифицируется с помощью токена , полученного на шаге 3
  5. токен используется для аутентификации в «пуле пользователей» в Cognito, чтобы проверить, исходит ли запрос от подлинного устройства.
  6. Если запрос аутентификации завершается успешно, шлюз API вызывает лямбда-функцию, которая имеет соответствующую роль IAM прикрепленная к нему, эта роль IAM позволяет публиковать сообщения в темах SNS
  7. . Лямбда-функция публикует сообщение в желаемой теме SNS. Поскольку вы упомянули, что каждое устройство будет публиковать в своей собственной теме SNS, информация о теме SNS может храниться в полях метаданных пользователя в Cognito
2
ответ дан 3 December 2019 в 20:15

Теги

Похожие вопросы