【问题标题】:Cognito User Pool Groups not working with different rolesCognito 用户池组不使用不同的角色
【发布时间】:2019-07-07 06:11:35
【问题描述】:

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

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

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

所以组 1 是允许一切的宽松政策,而政策 2 是更严格的政策,不应该允许调用 API 网关中的某个资源。

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

我和this thread 有同样的问题,并且完全按照它说的做了,但仍然没有进展

【问题讨论】:

  • 这里有同样的问题。你解决了吗?
  • 不,我最终以另一种方式解决了它......我错误地使用了 cognito 作为授权人。我根本不应该使用授权人,而是使用 AWS_IAM 作为 API 网关。然后,我在每次调用 API 网关之前执行刷新凭据并刷新会话,在该网关中,我使用正确的 ARN(从早期登录中保存)承担正确的角色。有点棘手,但它有效。希望这对你有帮助!
  • 您好,感谢您的回答。在我以同样的方式问你之后,我昨天也解决了它。如果其他人可能感兴趣,我已经在此处发布了我的解决方案:stackoverflow.com/questions/48540390/…

标签: amazon-web-services amazon-cognito


【解决方案1】:

检查分配给用户组的角色有trust relationship。它需要这个,因此它可以承担联合身份提供者的角色。

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

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

参考资料:

Fine grained auth

Role based access control

【讨论】:

  • 美女!此评论解决了我在使用令牌时无法为用户承担组角色的难题。最后第二步对我有用。
【解决方案2】:

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

此外,我会选择更具限制性的政策优先级。您应该将“普通用户”策略应用为 Authenticated Role,并将更多“管理员用户”策略应用为属于特定组的用户所承担的角色。

类似于:

组: Admins(附加策略 A)(优先级 0) 组: 用户(附加政策 B)(优先级 10)

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

【讨论】:

  • 是的,我已经为用户组分配了一个角色
猜你喜欢
  • 2019-08-15
  • 2020-09-19
  • 2021-08-11
  • 2018-03-16
  • 2018-04-17
  • 2019-10-06
  • 1970-01-01
  • 2020-05-27
  • 2022-01-13
相关资源
最近更新 更多