Я занимаюсь исследованием мобильного приложения, которое хочу разработать, и мне было интересно, смогу ли я получить отзывы о следующей архитектуре. В моем будущем приложении пользователи должны иметь возможность проходить аутентификацию и регистрироваться через мобильное приложение, а также извлекать и использовать свои настройки после успешной аутентификации.
Мне нужна архитектура, в которой учетные записи пользователей управляются AWS Cognito, но вся связанная с приложением информация хранится в базе данных MySQL, размещенной в другом месте.
Зачем размещать базу данных вне AWS? Из-за высоких затрат / привязки к поставщикам / ради изучения архитектуры, а не всестороннего участия в AWS или Azure
Почему бы не создать собственное управление идентификацией? Потому что, в конце концов, я хочу сосредоточиться на приложении и не тратить много энергии на то, что AWS уже может мне дать (да, я знаю, не совсем в соответствии с моим последним аргументом выше, но в остальном все мои время уходит в базу данных и IAM)
Одно из моих предположений в этой схеме (пожалуйста, исправьте меня, если я ошибаюсь) заключается в том, что можно получить данные только из базы данных MySQL с «фиксированными учетными данными». Поэтому я не хочу, чтобы приложение (устройство пользователя) выполняло эти запросы (но вместо этого делало это на сервере), так как в противном случае учетные данные для базы данных были бы сохранены на устройстве.
Кроме того, чтобы пользователи (почти) не могли выполнять запросы к базе данных с поддельной идентификацией, я хочу, чтобы сервер извлекал идентификатор пользователя из AWS Cognito (вместо использования токена идентификатора из устройства) и используйте это в запросе SQL. Это должно защитить сервис от ложного ввода идентификатора пользователя устройством / пользователем.
Существуют ли какие-либо функции, которые я пропустил в любом из этих компонентов, которые могут сделать мой дизайн менее сложным или улучшить поток?