多租户Web应用程序中的Cognito用户

3
我们希望实现一个多租户应用程序,其中我们要利用:
- AWS Cognito 作为我们的用户池 - AWS DynamoDB 用于大部分数据
由于我们遵循合并方法,因此我们的DynamoDB数据将具有tenantID作为主键。所有用户也都在一个Cognito用户池中。
我们的应用程序还需要在应用程序内显示我们的用户,因此我需要查询用户。
我想直接查询AWS Cognito池并显示租户的所有用户。因此,我会向cognito用户添加一个属性custom:tenantID
但是存在一个问题:自定义属性是不可搜索/过滤的,因此我无法根据tenantID进行查询,这是我在所有其他数据表中所做的。
我考虑“滥用”可搜索数据字段之一,例如姓氏用于租户,但这似乎是一个糟糕的想法。
我希望避免仅为将用户链接到租户而创建DynamoDB表。 有哪些解决方法?
1个回答

3
使用AWS Cognito进行多租户应用程序时,仅使用Cognito进行身份验证。
您可以创建一个用户表,并为每个租户存储在DynamoDB表中的访问控制列表(授权),您还可以使用该表搜索用户等。
如果您使用自定义属性称为租户或在Cognito中存储租户标识符,则除了限制搜索外,您还将限制用户仅属于单个租户。

你能推荐一个用作用户ID的属性吗?比如电子邮件地址?Cognito ID?你知道类似你所建议的解决方案的真实世界示例吗? - pfried
2
如果您计划使用Cognito身份池,请使用CognitoID(这里是Cognito身份)。对于Cognito用户池,您可以使用电子邮件地址(如果电子邮件对于本地和联合用户身份都是必需的)。没有找到直接解决此问题的白皮书,但是对于多租户应用程序,可以参考以下两个白皮书。 https://d0.awsstatic.com/whitepapers/Multi_Tenant_SaaS_Storage_Strategies.pdf https://d0.awsstatic.com/whitepapers/saas-solutions-on-aws-final.pdf - Ashan
请将以下内容从英语翻译成中文,仅返回翻译后的文本:不要使用电子邮件地址或Cognito ID,生成一个新的UUID并将其存储为自定义属性。如果您使用Cognito sub,以后可能会遇到很多麻烦,因为无法控制该值。例如,转移到另一个用户池。电子邮件同样如此,如果用户想要更改他们的电子邮件怎么办?生成一个新的UUID值,这样你就可以控制了。 - danv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接