首页 > 解决方案 > AWS Cognito 用户池组优先级 - 按预期工作并且无用或损坏?

问题描述

tl;博士

如果具有较高优先级的组覆盖具有较低优先级的组的角色,那么能够将用户添加到用户池中的多个组的目的是什么?(而不是堆叠角色)

情况:

具有 2 个组的 Cognito 用户池。组“A”的角色可以完全访问 Dynamo,优先级为 10 组“B”的角色可以完全访问 Elastic Search,优先级为 9

如果我将用户单独添加到任一组,它会按预期工作。

然而

我假设能够将用户添加到多个组的目的是让角色堆栈而不是覆盖。这边走...:

结果可能是这样的:

但实际上: - A 和 B 中的某个人有权限 4、5、6 - A、B 和 C 中的某个人没有权限

标签: amazon-web-servicesamazon-cognito

解决方案


这是预期的行为。如果您想要两个组的权限,您只需创建另一个具有组合权限的组/角色。组用于分隔用户。在任何时候,用户只能承担一个角色。您可以让 cognito 根据优先级决定它将承担哪个角色,也可以在 GetCredentialsForIdentity 自定义角色 ARN 中指定它。此外,您还可以随时通过调用 GetCredentialsForIdentity 并切换角色 ARN 并使用特定角色的凭据进行调用来在后台切换角色。


推荐阅读