使用AWS Cognito对前端应用程序进行基于角色的授权

时间:2019-03-10 20:51:52

标签: angular session authorization token

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

Thanks a lot for looking,

马丁

1 个答案:

答案 0 :(得分:0)

Well, let me answer my own question. Figured out one way. Turns out AWS Cognito keeps the user related info (whatever you included in the user pool when created) in the id token. So if I designed a field to serve as the user role, I can retrieve anytime after sign in as long as the session is still valid. So to control access to certain page, I just need to check if the user is authenticated and its role matches what's expected (using CanActivate).

It works pretty well to me, but I'm not 100% sure if there is any inherent security risk by using Cognito for both authentication and authorization. Please let me know if you know any and how to avoid it.