AWS Cognito для аутентификации пользователей приложения и получения настроек из базы данных MySQL - PullRequest
0 голосов
/ 04 апреля 2020

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

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

Зачем размещать базу данных вне AWS? Из-за высоких затрат / привязки к поставщикам / ради изучения архитектуры, а не всестороннего участия в AWS или Azure

Почему бы не создать собственное управление идентификацией? Потому что, в конце концов, я хочу сосредоточиться на приложении и не тратить много энергии на то, что AWS уже может мне дать (да, я знаю, не совсем в соответствии с моим последним аргументом выше, но в остальном все мои время уходит в базу данных и IAM)

Одно из моих предположений в этой схеме (пожалуйста, исправьте меня, если я ошибаюсь) заключается в том, что можно получить данные только из базы данных MySQL с «фиксированными учетными данными». Поэтому я не хочу, чтобы приложение (устройство пользователя) выполняло эти запросы (но вместо этого делало это на сервере), так как в противном случае учетные данные для базы данных были бы сохранены на устройстве.

Кроме того, чтобы пользователи (почти) не могли выполнять запросы к базе данных с поддельной идентификацией, я хочу, чтобы сервер извлекал идентификатор пользователя из AWS Cognito (вместо использования токена идентификатора из устройства) и используйте это в запросе SQL. Это должно защитить сервис от ложного ввода идентификатора пользователя устройством / пользователем.

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

architecture design

1 Ответ

0 голосов
/ 04 апреля 2020

Управляется ли этот API (тот, что на шаге 3) шлюзом AWS API? Если это так, ваш пул пользователей Cognito может быть установлен как Authorizer в вашем AWS API-шлюзе, тогда шлюз автоматически позаботится о проверке токена (Авторизаторы позволяют вам контролировать доступ к своим API-интерфейсам с помощью Amazon Cognito Пользовательские пулы или лямбда-функция).

Вы также можете выполнить проверку токена в лямбде , если вам нужно проверить что-то еще в токене.

Относительно соединение между NodeJS (при условии, что это AWS лямбда), которое будет работать нормально, но помните о безопасности, поскольку данные ваших клиентов будут перемещаться за пределы AWS, и попробуйте использовать такие инструменты, как AWS Secret Менеджер , чтобы сохранить ваши пароли базы данных в безопасности и время от времени вращать их в вашей лямбде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...