Cognito用户池组不使用不同的角色

时间:2017-05-16 13:21:55

标签: amazon-web-services amazon-cognito

我正在努力实现以下目标: 我有一个Web应用程序,需要不同的用户权限来访问某些菜单和调用API网关。

我做了以下事情: - 设置包含2个组的用户池(组1 组2 ) - 将用户分配给这些组 - 设置2个策略(策略1 策略2 ,其中策略1是fed。身份验证中身份验证角色中的默认策略) - 在角色中设置正确的信任策略 - 在联合身份验证中,在身份验证提供程序下,我已将身份验证的角色选项设置为从令牌中选择角色

在前面,我已经解码 ID令牌,并在初始化登录时验证 cognito:groups 等是否正确。

因此,第1组是允许所有内容的宽松政策,而政策2是更严格的政策,不允许在API网关中调用某个资源。

但是当我将用户分配给具有更严格的策略2的组2时,用户似乎仍然使用允许所有内容的策略1。我在这里做错了什么?

我遇到与this thread相同的问题并完全按照说法完成但仍无进展

2 个答案:

答案 0 :(得分:3)

检查分配给用户组的角色是否为trust relationship。它需要这样才能承担联合身份提供者的角色。

您可以通过执行以下操作为用户池组角色构建适当的角色:

  • 打开AWS控制台
  • 转到IAM部分
  • 选择角色
  • 选择网络标识
  • 选择Amazon Cognito
  • 粘贴到您的标识池ID(联合身份验证)
  • 点击下一步
  • 现在添加/创建用户组所需的策略,例如S3访问,或其他。
  • 为角色命名并保存。
  • 转到您的用户池组,对其进行编辑并指定刚刚创建的角色。
  • 打开联合身份
  • 将经过身份验证的角色选择保管箱设置为Choose role from token
  • 可选择将Role resolution设置为DENY

参考文献:

Fine grained auth

Role based access control

答案 1 :(得分:0)

这可能是一个愚蠢的问题,但您是否已为Cognito用户池组分配了IAM角色?

此外,我会选择更严格的政策优先权。您应该申请"普通用户"策略作为经过身份验证的角色以及更多" admin用户"策略作为属于特定组的用户所承担的角色。

类似于:

组:管理员(已附加政策A)(优先级0) 组:用户(附加政策B)(优先级10)

经过身份验证的角色:政策B

相关问题