我有一个中途运行的应用程序,用户可以通过表单或 Facebook 注册。
我正在尝试执行以下操作,我想知道这是否符合 AWS Cognito 最佳实践。
报名:
- 注册表单(“本地用户”):用户可以输入用户名/密码以及详细信息(性别、生日等)。凭证存储在 AWS Cognito 用户池和自定义数据库中的所有其他配置文件详细信息中。
- 通过 Facebook 注册:用户可以点击页面上的 Facebook 登录按钮,在他通过身份验证后,如果 FB 没有提供,他必须填写缺失的信息(性别、生日等)。个人资料信息将存储在与通过表单注册的用户相同的数据库中。
游泳池:
- AWS 用户池作为身份提供商连接到我的 AWS 身份池中。
- Facebook 连接到同一个身份池。
令牌处理:
- “本地用户”:我根据用户池中的 identityId 从身份池中获取凭据。我使用此凭证访问 AWS 上的资源。凭据将缓存在客户端的安全位置。
- Facebook 用户:与“本地用户”相同的程序。
我的问题:
- 整体方法是否有意义,或者是否存在与 AWS Cognito 的设计不一致的地方?
- 我将所有个人资料信息(“本地用户”和 Facebook 用户)保存在自己的数据库中,因为我需要对个人资料信息进行更高级的查询/搜索功能。Cognito 不提供复杂的搜索功能。如果我分别与用户池分开,这是一种不好的做法吗?用户池只存储本地用户的用户名/密码?这种方法的缺点是什么?
- 我应该在用户池中为每个 Facebook 身份创建一个用户吗?如果是,为什么?