Назад |
Перейти на главную страницу
Аутентификация встроенных устройств для отправки push-уведомлений с помощью Amazon SNS
Я разрабатываю платформу, на которой большое количество встроенных устройств с поддержкой облака будет отправлять push-уведомления в мобильные приложения с помощью Amazon SNS.
Каждое встроенное устройство должно создать тему SNS и публиковать ее в этой теме. Пользователи зарегистрируются в теме и получат эти уведомления.
У меня вопрос: как встроенные устройства должны обрабатывать аутентификацию / авторизацию с помощью AWS, чтобы создавать темы и публиковать уведомления. Вот варианты, которые я рассмотрел до сих пор:
- Создайте одного пользователя IAM, который будет «совместно использовать» все встроенные устройства. Плохая идея: если взломано одно устройство, все они будут взломаны.
- Создайте отдельного пользователя IAM для каждого встроенного устройства. Это может быть вариант, но AWS ограничивает это 5000
- Настроить промежуточный сервер, который общается с AWS; для сервера будет создан пользователь IAM. Затем сервер генерирует временные учетные данные по запросу для встроенных устройств, и устройства используют это для аутентификации в AWS. Мне это не нравится, потому что это вводит дополнительную зависимость / единую точку отказа (промежуточный сервер).
Какие еще у меня есть варианты? Уверен, что я не первый, кто столкнулся с этой проблемой.
Вы можете сделать что-то вроде этого:
Предварительные условия и настройка:
- Установите Javascript SDK на ваше встроенное устройство (поскольку вы не упомянули ограничения устройства, эта архитектура предполагает, что ваше устройство достаточно способно запускать Javascript SDK)
- Создайте `` пул пользователей '' в Cognito (с помощью консоли AWS или API, интерфейса командной строки и т. Д.)
- В рамках начальной настройки устройства зарегистрируйте нового пользователя для каждого устройства, используя уникальные атрибуты, соответствующие вашей архитектуре, целевой аудитории приложения и бизнес-модели.
Процесс аутентификации:
- Когда вы хотите отправить новое сообщение в социальную сеть, происходит следующее:
- Ваше приложение (на встроенном устройстве) инициирует безопасную удаленную аутентификацию по паролю с помощью Cognito (конечно, с помощью методов SDK)
- Если запрос аутентификации завершается успешно, Cognito отвечает токеном.
- Ваше приложение использует токен и вызывает конечную точку POST, предоставленную шлюзом API, и аутентифицируется с помощью
token
получено на шаге 3 - В
token
используется для аутентификации по «пулу пользователей» в Cognito, чтобы проверить, поступил ли запрос с подлинного устройства. - Если запрос аутентификации завершается успешно, шлюз API вызывает лямбда-функцию, к которой прикреплена соответствующая роль IAM, эта роль IAM по существу позволяет публиковать сообщения в темах SNS.
- Лямбда-функция публикует сообщение в желаемой теме SNS. Поскольку вы упомянули, что каждое устройство будет публиковать в своей теме SNS, информация о теме SNS может храниться в полях метаданных пользователя в Cognito.