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