我正在AWS上开发一个多租户应用程序。我正在努力在Cognito上实现多租户。我的第一种方法是使用一个Cognito用户池和一个身份池来为整个应用程序提供支持。
目前,我们每个租户有两种类型的用户(管理员和普通用户),因此我希望为它们分配不同的IAM角色。
想法是为每个用户角色创建一个Cognito组,并将它们与相应的IAM角色关联起来。这样做挺好的。当使用组进行角色分配时,我将身份池已认证的角色选择配置为“从令牌中选择角色”。
然而,对于20个租户,需要40个组,而Cognito组的限制是每个用户池25个。
对于每个租户使用一个Cognito用户池也有同样的缺点,因为Cognito用户池的限制是50个(而我们预计会有超过25个租户)。
这些都是软限制,所以我知道可以要求增加限制。事实上,我请求增加Cognito组限制,但是回复时间太长了。
作为Cognito组的替代方案,我可以将身份池已认证的角色选择配置为“使用规则选择角色”。
通过这种方式,我添加了一个Cognito用户池自定义属性(custom:role),并配置了身份池Cognito身份验证提供程序,其中包括以下规则:
if custom:role equals 'tenant1_admin' then assign TENANT_1_ADMIN_IAM_ROLE
if custom:role equals 'tenant1_regular' then assign TENANT_1_REGULAR_IAM_ROLE
...
if custom:role equals 'tenant20_admin' then assign TENANT_20_ADMIN_IAM_ROLE
if custom:role equals 'tenant20_regular' then assign TENANT_20_REGULAR_IAM_ROLE
这样在Cognito上实现多租户的方式正确吗?据我所知,身份池身份验证提供程序规则数量没有限制。