Я читал много документов AWS Amplify и Cognito, но, похоже, для этого не описан прямой подход.
Что у меня есть:
У меня есть приложение iOS, написанное на Swift, и задняя часть настроена в нескольких лямбда-функциях. Я могу получить доступ к конечным точкам REST обычным способом (как и любой URL-адрес публикации c).
В результате у меня нет кода Amplify или AWS SDK, встроенного в мой код iOS.
Что я хочу?
1) Включить управление пользователями: разрешить пользователям регистрироваться / входить (это уже есть в моем бэк-энде, но я открыт использовать Cognito)
2) Защищать мой бэкэнд API, чтобы только авторизованные пользователи могли получить к нему доступ через мобильное приложение. (я могу использовать его из Postman для моих собственных целей разработки)
Что я знаю:
Я знаю, что существует механизм OAuth 2 (PKCE) для безопасного доступа API с мобильного телефона, не требуя секрета клиента, но AWS не дает понять, какие инструменты использовать для достижения этой цели.
Я не против использовать Cognito (если все хорошо) или мои собственные внутренние лямбды для управления пользователями. Единственное, что решение должно обеспечивать защиту моих REST API.
Препятствия:
Похоже, что их документация настолько фрагментирована, что
REST вообще не обсуждается. GraphQL есть, и они показывают хороший способ сделать все изнутри кода Swift с использованием моделей GraphQL, но для моих целей это является излишним. Я хотел бы получить к нему доступ, как и к любой другой конечной точке REST в мире, но безопасным способом, ограниченным для моего мобильного приложения.
Нет четкого различия между AWS SDK против Amplify SDK (я получил несколько подсказок от Google, что Amplify находится на более высоком уровне и абстрагируется от множества вариантов, но ничего конкретного)
Документация по AWS очень концептуальна, но не содержит примеров того, как справиться с этим конкретным случаем использования.
Я посмотрел несколько замечательных Youtube видео также, но они не относятся к этому стеку платформы.
PS: Пожалуйста, не нужно больше готовых ссылок на документы. Я уже прошел через многие из них, и, если ни один из них не подходит непосредственно к моим вопросам выше, я боюсь, что они не помогут.
ОБНОВЛЕНИЕ
Я нашел некоторые хорошие примеры того, как Cognito обрабатывает токен + управление пользователями в мобильном приложении. Тем не менее, в этих примерах все еще кажется, что регистрация происходит без токена. Предоставление информации об идентификаторе пула и c в комплекте приложений и при условии, что любой желающий может зарегистрироваться с помощью SDK, можно легко получить токен. Даже с помощью специальных лямбда-авторизаторов, использующих интеллектуальный синтаксический анализатор / фиддлер строк, конечные точки могут быть открыты изнутри пакета приложения, и очень вероятно неправильное использование API.
Эти примеры, вероятно, не используют PKCE (я предполагаю, что они используют SRP ). Или я пропускаю важный шаг.
Допустим, я использую AppAuth для получения токена от конечных точек Cognito. Оправдывает ли это, если я хочу аутентифицировать пользователя, используя идентификатор пользователя / пароль Cognito?
У меня также есть путаница в отношении URI перенаправления. Обязательно ли перенаправление в мобильном приложении для получения токена (даже если я не использую какую-либо публичную c аутентификацию, такую как Google / Facebook)?