2017-10-07 114 views
1

我们要认识到,我们要利用多租户应用:Cognito在多租户的webapp用户

  • AWS Cognito为我们的用户群
  • AWS DynamoDB为我们的大多数数据

由于我们正在关注pooled approach,因此我们的DynamoDB数据将以tenantID作为主键。所有用户也都集中在一个认知用户池中。

我们的应用程序还需要在应用程序中显示我们的用户,因此我需要查询用户。

我想直接查询AWS Cognito池并显示租户的所有用户。因此我会向认证用户custom:tenantID添加一个属性。

但有一个问题:自定义属性是not searchable/filterable,所以我不能做一个基于tenantID的查询,我会做所有其他数据表。

我曾经想过为一个可以搜索的数据字段“滥用”租户的姓名,但这似乎是一个糟糕的主意。

我想避免创建一个用于将用户链接到租户的唯一目的的dynamoDB表。有什么办法来解决这个问题?

回答

2

将AWS Cognito用于多租户应用程序时,请仅将Cognito用于身份验证。

您可以创建一个用户表与存储在DynamoDB表,你也可以用它来搜索用户&等各租户访问控制列表(授权)

如果使用名为承租人自定义属性或在Cognito中存储租户标识符,除了搜索限制外,还将限制用户到单个租户。

+0

你能推荐一个属性作为用户的ID吗?电子邮件地址 ? Cognito ID?你是否知道像你所建议的解决方案的真实世界的例子? – pfried

+0

如果您打算使用Cognito身份库,然后使用CognitoID(这里是Cognito身份使用Cognito Userpools,您可以使用电子邮件地址(如果电子邮件对于本地和联盟用户身份都是强制性的) 找不到白皮书直接解决了这个问题,但是对于多租户应用程序而言,请参阅以下两份白皮书: https://d0.awsstatic.com/whitepapers/Multi_Tenant_SaaS_Storage_Strategies.pdf https://d0.awsstatic.com/whitepapers/ SaaS的解决方案上,AWS-final.pdf – Ashan