我想集成一个非常标准的功能:让用户(移动和网络)选择使用电子邮件/密码或使用 RBAC 的 Facebook(谷歌)帐户登录(不同的用户可能有不同的角色,如用户、版主、管理员、创建者, ETC)。这基本上是我想要登录的内容:
我浏览了许多 AWS 教程和其他材料。我对如何实现它有所了解,但我仍然没有全貌。希望有人可以在这里帮助我。
这是我目前的理解(请在我错的地方纠正我)。
1)对于电子邮件/密码注册/登录,我使用用户池。当用户登录时,我调用 authenticateUser(我使用的是 JS SDK):
cognitoUser.authenticateUser(authenticationDetails, {
..
})
在哪里成功
- 我存储身份、访问和刷新令牌,因此,用户不必每次都输入他的凭据
- 因为用户将访问 AWS 服务(例如 S3),所以我将 idToken 交换为 AWS 凭证
- 在访问资源时将 AWS 凭据存储在 LocalStore 中以供进一步使用
2) 对于 facebook 登录,我使用联合身份
- 获取 Facebook 访问令牌
- 使用 fb 令牌获取 cognito 身份
- 将认知身份交换为 AWS 凭据并将其存储在 LocalStore
问题:
Q1。注册/登录的逻辑是否有效且相当完整?我错过了什么吗?
Q2。我应该如何存储 Facebook 用户?我可以在用户池中执行此操作吗?我的印象是这是不可能的,但这意味着我有 2 个不同的用户目录:一个在 UserPool 中,另一个在另一个地方(假设在 DynamoDB 中)
Q3。如果我必须将用户存储在不同的地方(UserPool 和 DynamoDB),这意味着我有 2 个用户,基本上是一个用户,他们首先使用电子邮件/密码注册,然后决定使用 facebook——这对我作为应用程序管理员和用户来说都是不便. 如何处理这种情况?
Q4。如何为使用 facebook 令牌登录的用户(如用户、版主、管理员、创建者等)管理群组?
Q5。我应该如何限制 Facebook 登录用户对 AWS 以外的资源的访问?
Q6。有什么可行的例子吗?
谢谢!