我正在努力实现以下目标: 我有一个Web应用程序,需要不同的用户权限来访问某些菜单和调用API网关。
我做了以下事情: - 设置包含2个组的用户池(组1 和组2 ) - 将用户分配给这些组 - 设置2个策略(策略1 和策略2 ,其中策略1是fed。身份验证中身份验证角色中的默认策略) - 在角色中设置正确的信任策略 - 在联合身份验证中,在身份验证提供程序下,我已将身份验证的角色选项设置为从令牌中选择角色
在前面,我已经解码 ID令牌,并在初始化登录时验证 cognito:groups 等是否正确。
因此,第1组是允许所有内容的宽松政策,而政策2是更严格的政策,不允许在API网关中调用某个资源。
但是当我将用户分配给具有更严格的策略2的组2时,用户似乎仍然使用允许所有内容的策略1。我在这里做错了什么?
我遇到与this thread相同的问题并完全按照说法完成但仍无进展
答案 0 :(得分:3)
检查分配给用户组的角色是否为trust relationship
。它需要这样才能承担联合身份提供者的角色。
您可以通过执行以下操作为用户池组角色构建适当的角色:
Choose role from token
Role resolution
设置为DENY
参考文献:
答案 1 :(得分:0)
这可能是一个愚蠢的问题,但您是否已为Cognito用户池组分配了IAM角色?
此外,我会选择更严格的政策优先权。您应该申请"普通用户"策略作为经过身份验证的角色以及更多" admin用户"策略作为属于特定组的用户所承担的角色。
类似于:
组:管理员(已附加政策A)(优先级0) 组:用户(附加政策B)(优先级10)
经过身份验证的角色:政策B