【问题标题】:Role based authorization using AWS Cognito for a front end app使用 AWS Cognito 对前端应用程序进行基于角色的授权
【发布时间】:2019-08-01 04:52:18
【问题描述】:

如何使用 Cognito 用户池实现基于角色的授权?构建前端 Angular 应用程序,我使用 Cognito 用户池进行身份验证。那里没有问题。我希望具有不同角色的用户看到应用程序的不同部分。所以需要从某个地方带回一个角色。 当在用户池中创建用户时,我为用户分配了一个角色,并且可以在身份验证期间带回该角色信息。然后,我使用这个角色来决定为当前经过身份验证的用户显示哪些 UI 页面(例如在 Angular 中使用 CanActivate 等的身份验证守卫)。 这仅在一定程度上有效,因为用户角色无法在 F5 刷新或用户通过直接输入 URL 路由到另一个页面(这会导致页面重新加载)中存活。 此用户角色信息需要以某种方式存储在令牌或用户会话中,因此只要用户会话有效,我们就可以检索用户角色。有谁知道怎么做?某处有例子吗?搜索,看到一些关于使用 AWS IAM 策略、Cognito 中的用户组等的讨论,但无法弄清楚。

Thanks a lot for looking,

马丁

【问题讨论】:

    标签: angular session authorization token


    【解决方案1】:

    好吧,让我回答我自己的问题。 想出了一个办法。事实证明,AWS Cognito 将用户相关信息(创建时包含在用户池中的任何内容)保留在 id 令牌中。因此,如果我设计了一个字段作为用户角色,只要会话仍然有效,我就可以在登录后随时检索。因此,要控制对特定页面的访问,我只需要检查用户是否已通过身份验证并且其角色是否符合预期(使用 CanActivate)。

    它对我来说效果很好,但我不能 100% 确定使用 Cognito 进行身份验证和授权是否存在任何固有的安全风险。如果您知道以及如何避免它,请告诉我。

    【讨论】:

      猜你喜欢
      • 2022-12-05
      • 2022-11-14
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 2021-05-23
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多