Я хочу интегрировать довольно стандартную функциональность: дать возможность пользователю (мобильному и веб-сайту) либо войти в систему с адресом электронной почты / паролем, либо с учетной записью facebook (google) с RBAC (разные пользователи могут иметь разные роли, такие как пользователи, модераторы, администраторы, создатели , так далее). Вот в основном то, что я хочу от входа:
Я просмотрел ряд руководств по AWS и других материалов. Я получил некоторое представление о том, как это реализовать, но до сих пор не имею полной картины. Надеюсь, кто-нибудь может мне здесь помочь.
Вот мое текущее понимание (пожалуйста, поправьте меня, где я ошибаюсь).
1) Для регистрации / входа по электронной почте / паролю я использую пул пользователей. Когда пользователь входит в систему, я вызываю AuthenticateUser (я использую JS SDK):
cognitoUser.authenticateUser(authenticationDetails, {
..
})
где onSuccess
- Я храню токены идентификации, доступа и обновления, поэтому пользователю не нужно каждый раз вводить свои учетные данные
- Поскольку пользователи будут получать доступ к сервису AWS (например, S3), я обмениваю idToken на учетные данные AWS.
- Храните кредиты AWS в LocalStore для дальнейшего использования при доступе к ресурсам.
2) Для входа в facebook я использую Federated Identity.
- получить токен доступа к facebook
- с токеном fb получить когнитивную личность
- обменять идентификационные данные когнитивных данных на кредиты AWS и сохранить их в LocalStore
Вопросы:
Q1. Это действительная и достаточно полная логика для регистрации / входа в систему? Я что-нибудь пропустил?
Q2. Как мне хранить пользователей facebook? Могу ли я сделать это в пользовательских пулах? У меня сложилось впечатление, что это невозможно, но это означает, что у меня есть 2 разных пользовательских каталога: один в UserPool, а другой в другом месте (скажем, в DynamoDB)
Q3. Если мне нужно хранить пользователей в разных местах (UserPool и DynamoDB), это означает, что у меня есть 2 пользователя по существу для одного пользователя, который сначала зарегистрировался с адресом электронной почты / паролем, а затем решил использовать facebook - это неудобство для меня как администратора приложения и пользователя. . Как справиться с этой ситуацией?
Q4. Как управлять группами для пользователей, которые вошли в систему с помощью токена facebook (например, пользователей, модераторов, администраторов, создателей и т. Д.)?
Q5. Как мне ограничить доступ к ресурсам, отличным от AWS, для пользователей, выполнивших вход в facebook?
Q6. Любой рабочий пример для этого?
Спасибо!